Hudson을 이용한다면 scm 저장소로부터 (메이븐 타입의) 프로젝트를 체크아웃/업데이트 받아서 특정 goal/phase를 실행하는 일은 Hudson의 몫이다. 그러니까 보통은 메이븐타입 프로젝트의 pom.xml로는 프로젝트 자체를 scm에서 체크아웃/업데이트 받는 일은 안한다.
하지만 허드슨을 이용하지 않고 허드슨의 일을 대신해서 프로젝트 소스를 scm으로부터 받아와서 빌드/배포 goal을 실행해야 하는 상황이라면 어떻게 해야할까?
scm에서 체크아웃/업데이트하고 프로젝트 안의 pom.xml에 대해 goal을 실행하는 쉘스크립트를 짜는 것도 한가지 방법일 수 있지만 이러한 작업을 하는 또다른 pom.xml을 만드는 것도 가능하다. maven-scm-plugin 플러그인을 이용하면 된다.
<scm>
<connection>scm:svn:https://127.0.0.1:8443/svn/XXX</connection>
</scm>
... ...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.1</version>
<configuration>
<connectionType>connection</connectionType>
<scmVersionType>tag</scmVersionType>
<scmVersion>${scm.version}</scmVersion>
<checkoutDirectory>workspace</checkoutDirectory>
<workingDirectory>workspace</workingDirectory>
<skipCheckoutIfExists>true</skipCheckoutIfExists>
<username>user</username>
<password>user</password>
<goals>clean test war:inplace</goals>
<profiles>env-staging</profiles>
</configuration>
</plugin>
<connection>scm:svn:https://127.0.0.1:8443/svn/XXX</connection>
</scm>
... ...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.1</version>
<configuration>
<connectionType>connection</connectionType>
<scmVersionType>tag</scmVersionType>
<scmVersion>${scm.version}</scmVersion>
<checkoutDirectory>workspace</checkoutDirectory>
<workingDirectory>workspace</workingDirectory>
<skipCheckoutIfExists>true</skipCheckoutIfExists>
<username>user</username>
<password>user</password>
<goals>clean test war:inplace</goals>
<profiles>env-staging</profiles>
</configuration>
</plugin>
위처럼 pom.xml을 만들어 놓고 scm:bootstrap 을 실행하면 메이븐은 checkoutDirectory로 지정된 workspace에 프로젝트 소스를 체크아웃 받는다. 체크아웃 받은 뒤에 프로젝트 root의 pom.xml에 대해서 <goals/>에 나열된 goal을 실행해준다.
mvn -Dscm.version=RB123 scm:bootstrap
'Build&Deploy > Maven' 카테고리의 다른 글
Maven : 원격서버로 파일을 전송하는 방법 (0) | 2008.10.02 |
---|---|
Maven : 프로퍼티를 properties '파일'로 분리하기 (0) | 2008.10.01 |
Maven : test, deploy phase 건너뛰기 (0) | 2008.10.01 |
Maven : profile 마다 소스 디렉토리 달리하기 (0) | 2008.10.01 |
Maven : 임의의 파일을 포함하는 zip 파일 만들기 (0) | 2008.10.01 |