読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Cargo Maven2 PluginでTomcatにリモートデプロイ

 前々から使いたいと思っていた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におけるプロファイルの使用方法