Deploy Pluginを使ってみました。

開発中のアプリケーションのスナップショット版を関係者に公開しているサーバにディプロイするためにHudsonのDeploy Pluginを使ってみました。このプラグインは、ビルド後にアプリケーションサーバへのディプロイしてくます。

このプラグインをインストールすると、各プロジェクトの設定の"ビルド後の処理"に以下の設定項目が追加されるので、

ここを設定しておくとディプロイしてくれます。
Tomcat URLにはディプロイしたいTomcatのマネージャアプリのURLを指定します。

使ってみて一つ問題がありました。
Hudsonやプラグインのの問題ではないのですが、再ディプロイしようとすると古いアプリケーションが削除できないできない現象が発生しました。Tomcatのwebappsフォルダを見てみるとwarファイルを展開したフォルダの"WEB-INF/lib"フォルダに、ロックされているみたいで、jarファイルが削除されずに残ったままになっていました。ちなみに削除されなかったのは、struts,commons-digester, commons-validatorあたりでした。

これについては、こちらを参考にさせていただき、warファイルに、以下の内容のMETA-INF/context.xmlを含めることで、ファイルをロックしないようにすることができました。根本的な対応ではなく、パフォーマンスにも多少影響があるようですが、本番環境ではないのでとりあえず、目をつむります。

<Context antiJARLocking="true" antiResourceLocking="true"/>

これまでもSeleniumを使ったテスト用にCargoMavenプラグインを使ってディプロイをしていたのですが、どちらを使うべきか迷います。Deploy Pluginに限ったことではないのですが、個人的にはMavenを使ったプロジェクトではmavenでできることはpom.xmlに記述しておいた方が、コマンドラインからも実行することができるのでよいような気がしています。


Hudsonは年に数回くらい気が付いたときに新しいバージョンに入れ替えているのですが、どんどん使いやすくなってますね。
いつの間にかプラグインの管理もできるようになっていて便利です。私のようなWebアプリケーションを開発する人間にとっては、便利なだけでなく、ユーザビリティやプラグインの機構など、すごくお手本になるプロダクトだと思います。