第1章
構成管理入門  

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

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

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

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

第6章
リリースの自動化

Appendix
Maven 2はまり道


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

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

Authors:YAMAMOTO Ryuzo

Cargo Maven2 Plugin

Cargo(注3)は、TomcatやJettyなどのアプリケーションサーバをラッピングし、アプリケーションサーバ の起動や停止、Webアプリケーションの配備など、TomcatやJettyを自由自在に操作するJavaのライブラリ です。 Maven 2、Maven 1、Antのプラグインが提供されています。
Cargo Maven 2 Pluginは、このCargoをMaven 2から利用するためのMaven 2プラグインです。 このプラグインを利用することで、リリース作業4.の「アプリケーションを配備(再配備)する」 を自動化できます。
Cargo Maven 2 Pluginによる配備(デプロイ)には、次の2つがあります。 本章では、後者を利用する場合を説明します。

CodehouseのMavenリポジトリの設定

Cargo Maven 2 Pluginはセントラルリポジトリには登録されておらず、CodehouseのMavenリポジト リにて配布されていますので、pom.xmlにCodehouseのMavenリポジトリを追加する必要があります。 webdb-webappプロジュクトのpom.xmlにリスト1の設定を追加してください。

(注3)http://cargo.codehaus.org/

●リスト1 CodehouseのMavenリポジトリの追加
<project>
  ...
  <pluginRepositories>
    <pluginRepository>
      <id>codehaus snapshot repository</id>
      <url>http://snapshots.repository.codehaus.org</url>
      <release>
        <enabled>true</enabled>
      </release>
    </pluginRepository>
  </pluginRepositories>
  ...
</project>
    

Cargo Maven 2 Pluginの設定

pom.xmlにCargo Maven 2 Pluginの設定を追加します(リスト2)。 設定すると、下記のコマンドにてデプロイ・アンデプロイが可能となります。
> mvn package cargo:deploy
> mvn cargo:undeploy

●リスト2 Cargo Maven 2 Pluginの設定
<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <configuration>
          <container>
            <containerId>tomcat5</containerId>
            <type>remote</type>
          </container>
          </configuration>
          <configuration>
            <type>runtime</type>
            <properties>
              <cargo.tomcat.manager.url>
                http://localhost:18080/manager
              </cargo.tomcat.manager.url>
              <cargo.tomcat.username>tomcat</cargo.tomcat.username>
              <cargo.tomcat.password>tomcat</cargo.tomcat.password>
            </properties>
          </configuration>
          <deployer>
            <type>remote</type>
              <deployables>
              <deployable>
                <groupId>jp/gihyo</groupId>
                <artifactId>webdb-webapp</artifactId>
                <type>war</type>
              </deployable>
            </deployables>
          </deployer>
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>
  

リリースしてみる

それでは実際にリリースを試してみましょう。 あらかじめ配備するためのTomcatは起動しておいてください (C:\webdb39\server\tomcat\bin\startup.bat)。
Tomcat起動後、webdb-webappディレクトリでコマンド「mvn package cargo:deploy」を実行してみ ましょう。 「BUILD SUCCESSFUL」が表示されればリリースは成功しているはずです。
TomcatのManagerアプリケーション(http://localhost:18080/manager/html)に、ユーザ名tomcat、 パスワードtomcatでアクセスしてください。 アプリケーションの一覧に「/webdb-webapp」が表示されていますね。そのリンクをクリックしてみる と「Hello World」が表示され、アプリケーションが無事配備されていることが確認できると思います。
次に、コマンド「mvn cargo:undeploy」を実行してみてください。 アプリケーションの一覧を再表示すると、「/webdb-webapp」が消えて配備解除(アンデプロイ)されていますね!
Cargo Maven 2 Pluginを使えば、ビルド・パッケージング・アプリケーションの配備までを「すべてMavenで実現」 できてしまいます。