前々から使いたいと思っていた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> <cargo.tomcat.manager.url>${cargo.tomcat.manager.url}</cargo.tomcat.manager.url> <cargo.remote.username>${cargo.remote.username}</cargo.remote.username> <cargo.remote.password>${cargo.remote.password}</cargo.remote.password> </properties> </configuration> <deployer> <type>remote</type> <deployables> <deployable> <groupId>com.sample</groupId> <artifactId>sampleartifact</artifactId> <type>war</type> </deployable> </deployables> </deployer> </configuration> </plugin> <properties> <cargo.tomcat.manager.url>http://fooserver:9080/manager</cargo.tomcat.manager.url> <cargo.remote.username>foouser</cargo.remote.username> <cargo.remote.password>foopasswd</cargo.remote.password> </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におけるプロファイルの使用方法