2016-07-26 58 views
2

我面臨的情況是我需要指定傳遞依賴的版本之一。我如何使用(參考)傳遞性依賴的版本?

有了下面的依賴關係樹,

A <- B <- C 

我需要用C的pom.xml

指定的版本有沒有辦法做到這一點?所以我可以過濾這樣的文件?

A's version is @{...a.version} 
+0

模塊A和B是否是您的代碼? –

+0

@SteveC是的,實際上。 –

+0

這些模塊是否共享一個父pom.xml? –

回答

1

使用<optional>true</optional>

Ç - >乙 - >甲

POM(B):

<dependencies> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>A</artifactId> 
     <version></version> 
     <optional>true</optional> 
    </dependency> 
    ... 
</dependencies> 

POM(C):

<dependencies> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>B</artifactId> 
     <version></version> 
    </dependency> 
    <dependency> 
     <groupId></groupId> 
     <artifactId>A</artifactId> 
     <version></version> 
    </dependency> 
    ... 
</dependencies> 
2

如果你想指定一個(可能的)transiti的版本將依賴關係放入POM的dependencyManagement部分。然後,如果依賴發生傳遞(如果沒有發現這種傳遞依賴,則默默忽略)。

1

不可能直接引用一些任意依賴的版本(暫時的或不是)。

然而,在你的父POM你可以定義一個屬性:

<properties> 
    ... 
    <yourCdep.version> 
    ... 
</properties> 

,並添加依賴於dependencyManagement部分:

<dependencyManagement> 
    <dependencies> 
     ... 
     <dependency> 
      <groupId>yourCdep.group</groupId> 
      <artifactId>yourCdep</artifactId> 
      <version>${yourCdep.version}</version> 
     </dependency> 
     ... 
    </dependencies> 
</dependencyManagement> 

從模塊B作爲依賴刪除版本它現在被「管理」了。

在父POM中的屬性值將是在兩個模塊甲訪問和B.

特別地,該屬性值現在可以被施加時資源濾波。