前々から使いたいと思っていたCargo Maven2 Plugin。先日時間があったので設定してみました。使ってみたら思いのほか簡単に設定できました。ほとんどpom.xmlを編集するだけで対応可能です。これは中々便利です。Hudson等の構成管理でビルドからデプロイ、再起動まで全て行えます。
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat5x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargotomcatmanagerurl>${cargo.tomcat.manager.url}</cargotomcatmanagerurl>
<cargoremoteusername>${cargo.remote.username}</cargoremoteusername>
<cargoremotepassword>${cargo.remote.password}</cargoremotepassword>
</properties>
</configuration>
<deployer>
<type>remote</type>
<deployables>
<deployable>
<groupId>com.sample</groupId>
<artifactId>sampleartifact</artifactId>
<type>war</type>
</deployable>
</deployables>
</deployer>
</configuration>
</plugin>
<properties>
<cargotomcatmanagerurl>http://fooserver:9080/manager</cargotomcatmanagerurl>
<cargoremoteusername>foouser</cargoremoteusername>
<cargoremotepassword>foopasswd</cargoremotepassword>
</properties>
注意点としては、下記1点くらいですかね。
- Tomcat側に/managerと、ユーザの設定(conf/tomcat-users.xml)
id/passwordがtomcat/tomcatの例
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager"/>
</tomcat-users>
また配備されるファイル名について、一点チップスがあります。デフォルトのままですと、sample-0.0.1.warと言ったようにモジュール名+バージョン名.warになります。これは少し使いづらいので、sample.warといったように固定の名前にしたいと思います。buildプロパティの中にfinalName属性を付ければ、固定の名前となります。すべての場合に適用されると困るので、profileの中で指定しておくのが良いでしょう。
<finalName>sample</finalName>
Mavenからの実行は、下記のようなコマンドで実行できます。
mvn -Pintegration-test cargo:deployer-redeploy
※integration-test等のプロファイル名は適当に指定してください。
ant-taskをごりごり書くより100倍スマートですね。
参考にしたサイト:スペシャルサンクスです。
Maven2CargoDeploy
Cargo Maven2 Plugin Reference Guide
Cargo Maven2 Pluginを使って自動デプロイ
Maven2ベストプラクティス
Eclipse WTPを使ったWebアプリでもカンタンMaven
Cargo Maven2 Pluginにおけるプロファイルの使用方法