いくつかの J2EE プロジェクトを Ant から Maven2 に移植中です。これらのプロジェクトはすべて、1 つの EJB と 1 つの Web モジュールを含み、推奨される「スキニー」EAR パッケージ方式を使用します。これは、EJB や Web モジュールが依存する JAR がすべて EAR のルートに配置されることを意味します。EJB と Web モジュールの両方に、それぞれのマニフェストに Class-Path エントリがあり、特定の JAR を参照します。また、Web モジュールの Class-Path も EJB jar を参照します。
Maven がこれをうまくサポートしていないことに気がつきました (それは強すぎますか? :))。スキニー WAR の処理に関する公式ページを読みましたが、EAR pom で WAR 依存関係を複製する必要があり、さらに悪いことに、推移的な依存関係も複製する必要がありました。どこでも依存関係を手動で処理する必要がある場合、Maven を採用するのは無意味に思えます。
その後、Google を開始し、さまざまな回避策を見つけました。明らかに、(a) スキニー EAR を実行したい、(b) Maven が提案するアプローチ (それ自体が回避策) が気に入らないというのは、私が初めてではありません。
これらのアプローチのいくつかを試しましたが、どれもうまくいきませんでした。また、Maven のバグのように見える問題もいくつか見つかりました。たとえば、WAR プラグインの「packagingExcludes」ディレクティブは、直接的な依存関係のみを除外し、推移的な依存関係は除外しません。あまり自信がありません。この特定の JIRA の問題を見つけましたが、まだ開いています。
その後、私のコマンドライン Maven 2.2.1 は、私の m2eclipse 組み込み Maven (Embedder v. 3.0) とは異なる動作をすることがわかりました。私たちの開発者は間違いなく Eclipse から Maven を動かしたいと思っていたので、最新のコマンドライン バージョンに依存するという選択肢はありませんでした。
ですから、私の質問は次のとおりです。現在、そして当面の間、すべての開発を Eclipse で行い、主にスキニー EAR プロジェクトで作業する場合、Maven に移行する価値はありますか? Maven の将来に、より堅牢で統合された方法で EAR を処理するものはありますか?