第1章
構成管理入門  

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

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

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

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

第6章
リリースの自動化

Appendix
Maven 2はまり道


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

Appendix Maven2はまり道

Authors:BABA Yasuyuki

はまりその3 m2eclipse

EclipseとMaven 2を組み合わせて使うときは、第3章で紹介したEclipseプラグインm2eclipseが便利です。 便利ですが、いくつか困ったこともありました。
Eclipseから社内リポジトリにdeployしようとしたとき、リポジトリへ接続できずにビルドに失敗し てしまいます。 mvnコマンドだとうまくdeployできるのに不思議でした。 これはm2eclipseのバージョン0.0.10がリリースされて原因がわかりました。 筆者の社内リポジトリはSSL接続で、秘密鍵による認証が必要ですのでsettings.xmlにログイン情報を記述 していました。ところが、m2eclipseは0.0.9までsettings.xmlを参照していなかったようです。 そのためにうまくリポジトリにログインできなかったのです。まだ古いバージョンを使っている場合は、 アップデートしておきましょう。

また、Webアプリケーションを開発するときにはEclipse とm2eclipse プラグイン、Sysdeo Tomcat Launcher プラグインを組み合わせを使うことがあるでしょう。 このとき、Eclipse 上でTomcatを開始するとClassCastExceptionが発生してしまいます。 原因を探ってみると、Tomcatが持っているServletAPIと、プロジェクトが持っているServlet APIで 重複したクラス定義をしてしまうのがいけないようです。

そんなときは最新のSysdeo Tomcat Launcherプラグイン(執筆時点ではbeta版が公開されています)と、 それに付属しているDevLoaderを使えば、 プロジェクトのプロパティから[Tomcat]→[開発用クラスローダ]でTomcatを起動するときに読み込む JARファイルを制御できるようになります。 そこでServlet APIを含むJARファイル(geronimoservlet_2.4_spec-1.1.jarやservlet-2.4.jar)と org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER以外をチェックします。 そうすることでクラス定義の重複がなくなり、ClassCastExceptionが発生しなくなります。 注意として、このような設定をすると、 C:\Documents and Settings\suzuki\.m2\repository\commonslang\2.3\commons-lang-2.3.jarのような ローカルリポジトリのJAR ファイルへの絶対パスが、.tomcatpluginファイルに書き込まれてしまいます。 これは開発チームで共有したくないので、いつもsvn:ignoreに登録して、Subversionにバージョン管理させ ないようにしています。