2011-10-21 2 views
10

他のモジュールに依存関係としてポンポンのすべてのサブモジュールを含める:Mavenは私達はように設定されているMavenのモジュールを持っている

時間が経つにつれてサブモジュールのこのリストはに(成長するように設定されている

a (parent) 
    -> b (submodule) 
    -> c (submodule) 
    -> d (submodule) 
20程度のリスト)。私たちは依存関係としてすべてのサブモジュールを含む別のモジュールを持っています。サブモジュールリストを従属リストと同期して手動で保持するのではなく、これを行うきっちりした方法がありますか?私。 aとすべてのサブモジュールを依存関係として含める方法はありますか?

答えて

0

"自動的に"依存関係を取得する唯一の方法は、推移的な依存性メカニズムを使用する方法です。依存関係の依存関係を取り込むことによってのみ機能します。したがって、すべてのサブモジュールに依存するpomがない限り、それらをすべてリストアウトせずに入手してください。これを行う必要がプロジェクト設計の欠陥を指しています。モジュールが「すべて」または「なし」の場合、それらはおそらく別々のモジュールではありません。

3

あなたはここにいくつかの選択肢があります:

  1. 変更なしに。各pomのすべての依存関係を一覧表示します。ただし、共通の親を持つ場合は、親のpomでdependencyManagementを使用して、さまざまな依存関係のバージョンを設定できます。児童ポックスでは、バージョンを一覧表示する必要はありません。 this section from Maven By Exampleを参照してください。このアプローチの欠点は、同じ依存関係を何度も繰り返し表示する必要があることです。
  2. すべての共有依存関係をリストする親pomを作成します。例hereを参照してください。ここでの欠点は、何らかの理由で別の親プロジェクトを使用する必要がある場合に親プロジェクトを使用するために、これを利用したいすべてのプロジェクトを制限することです。
  3. 私が最後に聞いた、mixinsは、still not readyでした。
  4. デザインを再考してください。プロジェクトが非常に多くの異なるモジュールやインターフェイスに依存するのは理にかなっていますか? couplingを減らすには、これらの新しいプロジェクトで使用できるインタフェースを1つ作成するとよいでしょう。 Apache Axis2などのいくつかのオープンソースのマルチモジュールプロジェクトは、このパターンに従います。 1つのモジュールに20種類の依存関係があり、新しいモジュールが呼び出せるインターフェイスが公開されています。新しいモジュールは、1つのメインモジュールを依存関係としてリストし、20の依存関係すべてを推移的な依存関係として取り込むことができます。

選択肢#4はおそらく正しいと思われますが、私はあなたの状況に十分慣れていません。

+0

私にも同様の問題があります。アプローチ#4は良い選択肢と思われる。アプローチ#4の例を教えてもらえれば助かりますか? –

1

デザイン上の考慮事項を別にして、これは簡単に行うことができます - 親pomを指す依存関係に<type>pom</type>を含めるだけです。例:

<dependency> 
    <groupId>my.group.id</groupId> 
    <artifactId>a</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <type>pom</type> 
</dependency> 
関連する問題