成果物のリリース

maven-release-pluginを使うと成果物のリリースを簡単に行なうことができる。

リリースの前にリリースができる状態かの確認をする。これはrelease:prepareゴールに-DdryRun=trueオプションを指定することで行なう。

mvn -DdryRun=true release:prepare

FAILUREしたら指示に従って問題を解消する。問題を解消したら再度上記コマンドを実行する。FAILUREしなくなったらrelease:cleanゴールを実行してから次へ。

mvn release:clean

リリースができる状態であれば、リリースの準備をする。リリースの準備では次のことが自動的に行なわれる。

  • trunkのpom.xml中の成果物のバージョン番号をリリースするバージョンに変更した状態のソースツリーをtagsにadd
  • trunkのpom.xml中の成果物のバージョン番号を次の開発バージョンの番号に変更してcommit

リリースの準備を行なうには、-DdryRun=trueオプションなしにrelease:prepareゴールを実行する。

mvn release:prepare

なお、タグは通常「tags/productname-X.Y.Z」のように打たれるが、タグを例えば「tags/productname/productname-X.Y.Z」のように打ちたい場合はタグのラベル名として「productname/productname-X.Y.Z」のように指定すれば良い。

コマンドの実行に失敗してしまった場合はrelease:rollbackゴールを実行した上でtagsから今回のリリースに対応するソースツリーを削除し*1、問題を解消してから再度release:prepareゴールを実行する。

mvn release:rollback

(タグの手動削除)

mvn release:prepare

リリースの準備が正常に終了したら、リリースを行なう。リリースでは次のことが自動的に行なわれる。

  • タグからリリースバージョンのソースツリーをcheckout
  • 成果物をビルド(通常はjar、ソースのjar、Javadocのjar)
  • Maven2リポジトリにdeploy

リリースを行なうには、release:performゴールを実行する。

mvn release:perform

コマンドの実行に失敗してしまった場合は問題を解消する必要があるが、問題を解消するにはソースツリー以下の内容を修正する必要があることが多い。ところがrelease:performではリリースバージョンのソースツリーがtags以下からチェックアウトされるため、trunkを修正しても反映されない。またtrunkのpom.xmlに書かれている成果物のバージョンは次の開発バージョンに置換されてしまっているため、そのままtrunk以下を修正すると訳の分からないことになってしまう。

このため、ソースツリーを修正する必要がある場合はrelease:rollbackをしてからrelease:prepareからやり直すようにする。

mvn release:rollback

(タグの手動削除)

mvn release:prepare

問題を解消したら再度release:performゴールを実行する。

これでリリースは完了である。

*1:release:rollbackゴールではタグの除去は自動的には行われない。参考:http://jira.codehaus.org/browse/MRELEASE-229