2011-09-21 3 views
6

私はMavenを初めて使いました。なぜ私の会社のモジュールが「モジュールグループ」に編成されているのか理解しようとしていますが、各サブモジュールもその親を明示的に宣言しています。私は、POMリファレンスがdifference between inheritance and aggregationについて何を言っているのかよく分かりません。例えばApache Maven:継承、集約、および依存関係の違いは何ですか?

、親モジュール:

<groupId>example.group</groupId> 
<artifactId>util</artifactId> 
<packaging>pom</packaging> 
<name>Util Parent</name> 

<modules> 
    <module>util_client</module> 
    <module>util_core</module> 
    <module>util_server</module> 
</modules> 

とその子の1:

<parent> 
    <artifactId>util</artifactId> 
    <groupId>example.group</groupId> 
    <version>trunk-SNAPSHOT</version> 
</parent> 

<groupId>example.group.util</groupId> 
<artifactId>util_core</artifactId> 
<packaging>jar</packaging> 
<name>Util Core</name> 

なぜそれを両方の方法を宣言?それは冗長ですか?物事はさらに混乱させるには、utilのサブモジュールのいくつかは、お互いに依存:これは質問のdoozyですが、すごい、これは混乱している場合

<groupId>example.group.util</groupId> 
<artifactId>util_client</artifactId> 
<packaging>jar</packaging> 
<name>Util Client</name> 

<dependencies> 
    <dependency> 
     <groupId>example.group.util</groupId> 
     <artifactId>util_core</artifactId> 
    </dependency> 
</dependencies> 

申し訳ありません!ご協力いただきありがとうございます。

答えて

9

サブモジュールを定義すると、トップレベルからまとめてビルドしてリリースすることができます。あなたは第二の例では、継承を使用する場合

、あなたは一度定義された親POMから定義を使用することができ、(のようなソフトウェアのバージョンは、使用する)1つのモジュールは他のモジュールからリソースを必要とするとき、最後の例では

を、それを依存関係として追加すると、それがダウンロードされ、ビルドパスに自動的に含まれます。

+0

なぜ、私は 'util_core'を' util_client'のサブモジュールとして指定したいのですか? 'util_client'はまだコンパイルされますか? –

+0

'util_core'がインストールされるまではコンパイルされません。' mvn install'あなたがトップレベルから実行すると、それらをすべて順番にコンパイルします。 –

関連する問題