2011-12-14 15 views
0

I次のような状況があります。PROJECTAがあり、複数のコンポーネントがあります。Mavenの:アグリゲータから継承

PROJECTA /コンポーネント1 PROJECTA /コンポーネント2

集約PROJECTA /のpom.xmlが(」ありモジュール 'タグ)これら2つのコンポーネントは、projectAを構築する。

projectBはprojectA.component1に依存しています。私の目標は、手動でprojectAを最初に構築することなく、projectBを1つのコマンドだけでビルドすることです。プロジェクトB/pom.xmlをprojectA/component1/pom.xml(パッケージングは​​pom)から継承させる方法があります。

しかし、事が大きくなると、私はprojectBがprojectA/pom.xmlから継承し、projectAが構成するコンポーネントを使用することが理想的です。これを行う方法はありますか?

おかげ

私はスーパーのプロジェクトで、プロジェクトAとBを置く

答えて

0

(プロジェクト0?)それらを集約し、両方の

Project 0 
| 
|-ProjectA 
| |--component1 
| |--component2 
| 
|-ProjectB 

あなたはから

mvn install --projects=ProjectB --also-make

を実行することができますプロジェクト0のルート。 ProjectBはそれに依存しないためコンポーネント2をビルドしませんが、コンポーネント1をビルドします。

+0

論理的には、ProjectAとProjectBは関連している必要はありません。たとえば、ProjectAはユーティリティ(文字列ライブラリ、いくつかの一般的なグラフデータ構造など)の集合であり、projectBはユーティリティを必要とするいくつかのサーバ実装である可能性があります。
このシナリオでは、これは1つのスーパープロジェクトに入れることによって関連付けるハックのように見えます。
私の最大の目標は、プロジェクトを構築するためのステップ数を減らすことです。余分なものが作られるのを防ぐことは二次的です。両方を一緒に達成するのはすばらしいでしょう。
Aman

+0

さて、ProjectBはProjectAに依存しています。私は彼らが同じソースコードリポジトリに住んでいると仮定します。 – artbristol

+0

非常に大規模なことを考えてみましょう。例えば。リポジトリgooglecode/ads、googlecode/searchなどの5つの商品を検索します。ニュースは検索(ニュース検索)と画像(画像のサイズ変更)のコードを使用します。次に、bigtable、mapreduceのようなツールがgooglecode/bigtableとgooglecode/mapreduceにあります。ユーティリティ、機械学習などがあります。あなたが提案しているのは、膨大な数の「集約グループ」を含むモノリシックのgooglecode/pom.xmlです。 jar(または同等のもの)が見つからない場合、コンパイルするパスを追加するためにmavenが必要です。 – Aman