0

(maven-ear-plugin を使用して) EAR の異なるバージョンをビルドするための解決策を見つけるのに苦労しています。

私が望むのは、実稼働用の EAR またはテスト用の EAR のいずれかを生成できるようにすることです。テスト EAR には、さまざまな ejb-jar.xml デプロイメント記述子と、src/test フォルダーからのいくつかの追加クラスがあります。

これまでに見つけた唯一の方法は、jar-plugin 構成をオーバーライドして src/test/resources からの ejb-jar.xml といくつかの Java ファイルを含め、プロファイル「blubb」を導入することです。アーティファクト ID にカスタム サフィックスを追加します (または分類子を設定します)。次に、変更された EAR を構築するために、サフィックスを持つアーティファクトに依存する展開 pom に同じプロファイルを導入します。

さまざまな情報源で、プロファイルに応じて同じプロジェクトの異なる jar を生成するのは EVIL (つまり、Maven の方法ではない) であると読みました。(たとえば、 異なる/フィルターされたクラスで複数の jar を生成するための Maven のベストプラクティス? または http://blog.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-project-and -なぜあなたはすべきではない/ )

私の質問は、代わりにこれを行うにはどうすればよいですか? テスト固有のコードを使用して追加のモジュールを構築し、プロファイルで条件付きで展開に含める場合、ejb-jar.xml が正確にその jar ファイルの META-INF ディレクトリに存在する必要があるという問題があります。 「test」モジュールは別の jar に含まれるため、ejb-jar.xml は元の jar の ejbs には適用されません。

この問題をどのように解決できますか (変更されたデプロイメント記述子と追加のクラスを使用して特別なテスト耳を作成する)、maven の方法はありますか?

ヒントと洞察は大歓迎です:-)

4

2 に答える 2

0

maven-dependency-plugin を使用して、私が望んでいたことを達成する方法を見つけました。

基本的な問題は、コードを複製してはならず、必要に応じて追加/置換されたコンテンツを使用して同じモジュールを構築する必要があることでした。

私が行った方法は、2 番目のモジュールを作成し、その中で変更したいモジュールを唯一の依存関係として宣言することでした。次に、ビルドサイクルで、「unpack-dependencies」という目標を持つmaven-dependency-pluginを追加し、「prepare-package」時に元の依存関係をtarget/classesフォルダーに解凍することを選択しました。

このようにして、最初のモジュールの内容に加えて、調整したモジュールのメイン ソースにいくつかの変更を加えることができる 2 番目のモジュールを取得しました。

全体として、これはまだきれいではありませんが、私の意見では、Mavenには時間がありましたが、今はより良いビルドツールの時です;-)

ところで、誰かがよりエレガントな解決策を知っていれば、私はまだ開いています... 私の問題は、どのような状況でも自分の構成やコードを複製したくないということでした。そして、Mavenはこれを本当に難しくしているようです...

于 2013-08-10T16:44:41.730 に答える