第1章
構成管理入門  

第2章
Subversionによるバージョン管理入門

第3章
Subversionベストプラクティス

第4章
Maven2によるビルド入門

第5章
Maven2ベストプラクティスリリースの自動化

第6章
リリースの自動化

Appendix
Maven 2はまり道


※WEB+DB PRESS Vol.39掲載の記事を載せています。

第6章 Maven2ベストプラクティス

Authors:YAMAMOTO Ryuzo

Maven Release Plugin

Cargo Maven 2 Pluginを利用しただけでは、リリース作業の1.「リリースタグを付ける」、 2.「リリースタグからソースコードをチェックアウトする」はまだ自動化できていません。 Maven Release Pluginも併用することで、リリース作業すべてをコマンド1つで行えるようになります。
Maven Release Pluginはその名のとおり、リリース作業を行うMavenプラグインです。 結論から言いますと、コマンド「mvn release:prepare release:perform」だけで、 リリース作業1.〜4.すべてが完了できるようになります。

Maven Release Pluginの設定

Maven Release Pluginを使用するには、pom.xmlにリスト3の設定が必要です。 リリースタグを作成するリポジトリパスと、リリース時に行うフェーズとゴールを指定しています。

●リスト3 Maven Release Pluginの設定
<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <tagBase>file://C:webdb39/6/repo/tags</tagBase><!-- リリース用タグ用リポジトリパス -->
          <goals>clean,package,cargo:deploy</goals><!-- アプリケーションサーバに配備 -->
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>
  

リリースしてみる

それでは実行してみましょう。先と同様に、あらかじめTomcatは起動しておいてください。
まず、1.「リリースタグを付ける」などのリリース前準備を行うため、次のコマンドを実行します。
C:\work\6\webdb-webapp_1_0_x> mvn release:prepare

リリースバージョン名などを聞かれますので、デフォルトのままでよければEnterキーを押します。 このコマンドでは、次のような作業が行われました。

  1. コミットしていないソースコードがないかチェック
  2. SNAPSHOTバージョンのライブラリに依存していないかチェック
  3. pom.xmlのバージョン設定「1.0.0-SNAPSHOT」を「1.0.0」に変更
  4. ビルド
  5. 変更したpom.xmlをバージョン管理(Subversion)にコミット
  6. バージョン管理へのリリースタグ付け(webdbwebpp-1.0.0)
  7. pom.xmlのバージョン設定を、次の開発バージョン「1.0.1-SNAPSHOT」に変更
  8. 変更したpom.xmlをバージョン管理(Subversion)にコミット

そして、2.「リリースタグからソースコードをチェックアウトする」〜4.「アプリケーションを配 備(再配備)する」を行うため、次のコマンドを実行します。
C:\work\6\webdb-webapp_1_0_x> mvn release:perform

「BUILD SUCCESSFUL」のメッセージが表示されたと思います。これだけでリリース完了です。
このコマンドでは、次のような作業が行われました。
  1. リリースタグからプロジェクトをチェックアウト
  2. Maven Release Pluginに設定したゴール(package、cargo:deploy)の実行

これで、リリース作業すべてが自動化されました。 どうです? すごいですね! この自動化された作業を開発用サーバなどで何回も試して問題ないことを 確認しておけば、もうリリースは楽勝ですね。
なお、ここではコマンドを2回に分けて実行しましたが、「mvn release:prepare release:perform」と コマンド一発でまとめて実行することもできます。