18 10月 2010

Maven2 : Release Plugin

在專案的後期,要進入大量測試的階段,或是要完成測試要打包完整檔案給客戶時,通常都會在source code上加上一個tag,例如XXX-RC1,XXXX-RELEASE,以方便追踪各項問題,當然透過其他SCM提供的GUI Tools或是Commadn line來執行這種上tag的工作是沒有任何疑慮的,只不過Maven也提供了一個Plugin讓我們可以在沒在錯誤下完成一個Build時一併進行上Tag及其他release的工作,如修改pom.xml的version。

Maven Release Plugin請參考http://maven.apache.org/plugins/maven-release-plugin/index.html

基本上只要在pom.xml的plugin中加上

<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-release-plugin</artifactid>
    <version>2.1</version>
</plugin> 

然後在goals裡加上release:prepare即可

執行時會詢問你要簽入的version與tag/label的資料

[INFO] Working directory: /Users/elliot/tmp/target/checkout
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "BuildDemo"? (idv.elliot:BuildDemo) 0.0.3: : 
What is SCM release tag or label for "BuildDemo"? (idv.elliot:BuildDemo) BuildDemo-0.0.3: : 
What is the new development version for "BuildDemo"? (idv.elliot:BuildDemo) 0.0.4-SNAPSHOT: :

當整個build在沒錯誤的情況下結束時,release plugin會依你提共的資訊對source code加上tag,然後修改pom.xml的version,再將pom.xml checkin到SCM中。

如果希望不要出現提示,可以用-D的方式將相關版本資訊帶入,或是修改release.properties,然後在build 時加上--batch-mode即可

例如:

mvn --batch-mode -Dtag=my-proj-1.2 -DreleaseVersion=1.2 -DdevelopmentVersion=2.0-SNAPSHOT release:prepare 


沒有留言: