Build Number Maven Pluginを使う
Build Number Maven Pluginを使うと、pom.xmlでプロパティとしてSCMのリビジョン番号${buildNumber}を使用できるようになります。
前提
内部的にsvnコマンドを実行するのでsubversionのバイナリがインストールされている必要があります。TortoiseSVN不可です。
Apache Subversion
svnコマンドではなくjavasvnを使用することもできますが制約有り(詳細は設定の方をみてください)。
設定
pom.xmlに以下記述を追加します。
scmが定義されていなければ追加。
<scm> <url>http://example.com/svn/myproj/</url> <connection>scm:svn:http://example.com/svn/myproj/trunk/</connection> <developerConnection>scm:svn:example.com/svn/myproj/trunk/</developerConnection> </scm>
pluginに、Build Number Maven Pluginの定義を追加。
- svnコマンドが失敗しても処理を続ける場合には
で失敗時の値を指定します。 - doUpdateをtrueにすると、svn updateが実行されます。
- doCheckをtrueにすると、未コミットの変更がある場合に処理が失敗します。
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.0-beta-4</version> <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions> <configuration> <doCheck>false</doCheck> <doUpdate>false</doUpdate> <revisionOnScmFailure>no_revision</revisionOnScmFailure> <!-- svnコマンドを使用しない設定 ただし、revisionOnScmFailureが有効にならない?? <providerImplementations> <svn>javasvn</svn> </providerImplementations> --> </configuration> </plugin>
使い方
jarファイルのマニフェストへの追加。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.1</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> <manifestEntries> <Implementation-Build>${buildNumber}</Implementation-Build> </manifestEntries> </archive> </configuration> </plugin>
jarファイル名にリビジョン番号を入れる。
<build> <finalName>${project.artifactId}-r${buildNumber}</finalName> </build>