0

複数のモジュールを含むMavenを使用して既存のEARを構築することに関するものです。Webプロジェクトとjarプロジェクトを含むEARプロジェクトがあり、合計8つのプロジェクトがあります。earはRADを使用して構築されているため、現在、プロジェクトのいずれにもPOMファイルがありません。今、私はプロジェクトにMavenを使用したいと思います。POMの作成とビルドにm2eclipseを使用したいと思います。親プロジェクトを作成し、その下にモジュールを作成することを計画しています。これには、earプロジェクトなども含まれます。効果的な構造は以下のようになります

ワークスペース

   >parent proj

          >ear project

          >web proj

          >jar1 proj

          >jar2 proj

しかし、私はすべてのプロジェクトを含むearファイルを持っており、作業スペースにearをインポートすると、以下のようにすべてのプロジェクトのフラット構造が作成されます。

ワークスペース

 >web proj

 >jar1 proj

 >jar2 proj

懸念されるのは、RADプロジェクトのセットアップとそれによってワークスペースに作成された.metadataファイルのためです。ワークスペースで親プロジェクトを作成してから、earを親にインポートすると問題が発生します。次の方法を教えてください

1>親プロジェクトの間接参照を追加し、その下にすべてのプロジェクトを耳に入れます

2>ビルド時にすべてのモジュールを保持する親の下にearプロジェクトを追加する方法

私の状況と要件が明確であることを願っていますそれについてアドバイスしてください

ありがとうnarayan

4

2 に答える 2

1

耳を親プロジェクトにインポートする必要はありません。親は、耳をpom内のモジュールとして参照し、親内のサブディレクトリとして表示する必要があります。
おそらく、インポートの意味がよくわかりません。
親pomでモジュールが宣言される順序は、モジュールがビルドされる順序です。したがって、依存関係としてjar1、jar2、およびWebモジュールがあるため、earはリストの最後のモジュールである必要があります。
webは、おそらくjar1またはjar2、あるいはその両方に依存しているため、リストの最後から2番目のモジュールである必要があります。

M2Eclipseには、ワークスペース内の個別のプロジェクトとして上記で説明したマルチモジュールプロジェクト構造をインポートする機能があります。このオプションを選択すると、親プロジェクトを介して個々のモジュールで作業し、完全に拡張する必要がなくなります。
これはディスク上のネストされた構造を変更せず、モジュールをそれぞれ独自のプロジェクトとして提示するだけであり、モジュールディレクトリは親プロジェクトにも表示されます。
また、各モジュールを個別にビルドしたり、親プロジェクトをビルドして完全なビルドを実行したりすることもできます。

この質問でMavenリアクターについて読んでください。

メインプロジェクトに取り組む前に、簡単な原型を試してみることをお勧めします。http://docs.codehaus.org/display/MAVENUSER/Archetypes+Listを参照してください

Matt Raibleによるappfuseアーキタイプは、実際に作業するのに適した例です。以下のコマンドを試して、スケルトン構造を作成してください。

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0:generate -DgroupId=com.test.archetest -DartifactId=archetest -DarchetypeArtifactId=appfuse-modular-jsf -DarchetypeGroupId=org.appfuse.archetypes

一般的なプロジェクト構造を確認し、M2Eclipseを使用してインポートします。これにより、Eclipseプロジェクトファイルが生成されます。これを実行することもできますmvn eclipse:eclipseが、ワークスペースに個別のモジュールが表示されるわけではありません。一部のプロジェクトは、Eclipseプロジェクトファイルをコミットしないことを選択し、上記のいずれかの方法でpomから生成しました。

上記のアーキタイプの構造を使用する場合は、親プロジェクトにearモジュールを追加する必要があります。これはM2Eclipseを介して行うことができます。

于 2011-03-16T19:11:01.573 に答える
1

ありがとう@crowne

階層構造の代わりに、モジュールアプローチを使用できます。

既存のすべてのプロジェクトをラップするには、同じワークスペースにパッケージタイプpomのMavenプロジェクトを作成し、既存のプロジェクトを以下のようにモジュールとして追加できます。

../module1

../module2

../module3

指定されたパスは、モジュールが宣言されているpomの場所を常に基準にしています。

于 2011-03-18T23:20:29.960 に答える