2013-01-18 128 views
0

我有一個錯綜複雜的Maven項目,其模塊和子項目最高可達四級繼承。此外,一些模塊依賴於不在同一「子樹」中的模塊,我想知道是否可以避免在每次有模塊依賴關係時表示版本。分層maven項目版本

比如我有

a 
-b 
    -c 
-d 
    -e 

假設模塊e取決於c,什麼是指定在乾燥方式的版本最好的方法是什麼?

如果在模塊e的pom.xml中,我沒有指定我想要哪個版本的c模塊,我的構建將會失敗。有沒有一種智能的方法來處理這個版本問題?

回答

2

groupId和artifactId表示maven中的單個項目,但必須指定版本(或從父pom繼承)才能確定該項目maven需要引用的版本。它看起來是多餘的,但是如果有很多不同的版本則尤其需要。

+0

請注意,這很重要,因爲任何對依賴項的更改(包括版本號)都意味着項目本身已發生更改。如果你不需要改變它的版本,你最終不能依靠所有具有相同版本號的工件(不包括SNAPSHOTS)。 –

1

,最好的方法是定義與自己合適的版本號的所有工件在dependencyManagement塊類似項目的根目錄:

a (pom.xml) 
-b 
    -c 
-d 
    -e 

下列要求:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>project</groupId> 
     <artifactId>b</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>project</groupId> 
     <artifactId>c</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>project</groupId> 
     <artifactId>d</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>project</groupId> 
     <artifactId>e</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 

但隨着給定結構:

a (pom.xml) 
-b 
    -c 
-d 
    -e 

必須包含一個模塊列表les(包裝pom),b(包裝pom)和d(包裝pom),這意味着a,b和d永遠不會被用作依賴關係,這意味着您可以從上述塊中省略它們。