5

教育目的で、プロジェクトのレイアウトを次のように設定しました (Eclipse をより適切に使用するためにフラットにします)。

-product
 |
 |-parent
 |-core
 |-opt
 |-all

親には、core、opt、および all を含む集約プロジェクトが含まれています。Core は、アプリケーションの必須部分を実装します。Optはオプションパーツです。すべては、core と opt を結合することになっており、これら 2 つのモジュールが依存関係としてリストされています。

現在、次のアーティファクトを作成しようとしています。

  1. 製品コア.jar
  2. 製品コア-src.jar
  3. product-core-with-dependencies.jar
  4. 製品-opt.jar
  5. 製品-opt-src.jar
  6. product-opt-with-dependencies.jar
  7. 製品-all.jar
  8. 製品-all-src.jar
  9. product-all-with-dependencies.jar

それらのほとんどは、作成がかなり簡単です。ただし、アーティファクトの集約には問題があります。すべての非推移的な deps のソースをダウンロードする「all」モジュールのカスタム アセンブリ記述子を使用して、product-all-src.jar を作成することができました。これは正常に動作します。この手法により、product-all-with-dependencies.jar を作成することもできます。

しかし最近、ソース プラグインで source:aggregate ゴールを使用して、集約プロジェクト全体のソースを集約できることがわかりました。これは、親プロジェクトの使用によって集約される javadoc プラグインにも当てはまります。

したがって、「すべて」モジュールのアプローチと「すべて」モジュールを捨てて、すべての集約に「親」モジュールを使用することの間で迷っています。「親」で生成された集約アーティファクトと「すべて」で生成された他のアーティファクトがあるのは不潔に感じます。親プロジェクトで 'product-all' jar を作成する方法、または 'all' プロジェクトで javadoc を集約する方法はありますか? それとも、両方を維持する必要がありますか?

ありがとう

4

2 に答える 2

5

平らになった木はもうあまり使われていません。これは、Eclipseがプロジェクトを処理する方法と、MavenとEclipseの適切な統合の欠如に対処するために数年前に行われました。m2eclipseを使用してMavenプロジェクトをEclipseにインポートする場合、Mavenの典型的なネストされたツリーで問題は発生しません。

Mavenビルドを構築する方法の良い例は何ですか?Mavenプロジェクトのソース自体。バンドルをパッケージ化する最終アセンブリを含む、必要なすべてのピースが含まれています。

典型的なネストされた構造には、親がその下のモジュールの集約を実行し、子が親から値を継承するトップダウン階層があります。これらは分離できる場合もありますが、これは標準ではありません。

于 2010-06-06T02:08:33.503 に答える
0

アセンブリ記述子を「すべて」から保持し、それをparent/に移動し、それに応じてparent/pom.xmlを変更してから、次のようなことを行ってそのアセンブリを作成することをお勧めしますmvn -f parent/pom.xml assembly:assembly. つまり、「親」がすでに行っていることを複製しているだけなので、「すべて」の冗長プロジェクトを削除します。

補足として、「親」は、そのプロジェクトが単なる親 pom.xml ではなく集約プロジェクトである場合、そのプロジェクトの命名の選択としては適切ではないようです。

[編集]

はるかに大規模なプロジェクトですが、おそらくあなたが思い描いているようにレイアウトされたプロジェクトは apache camel プロジェクトです。ここで確認してください: http://camel.apache.org/source.html。他のすべてのものを処理するparent/モジュールと、apache-camel/に実際のビルド配布を生成するための別のモジュールがあります(apache-camel/src//main/descriptorsのアセンブリ記述子を使用)。おそらくそれはより多くの助けになるでしょう。

于 2010-05-12T22:54:36.027 に答える