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>