有一個dep
庫我的項目的模塊之一(module1
)依賴於。依賴關係在父級的dependencyManagement
部分中聲明。如何使用父項目中隱式管理的傳遞依賴項?
...
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>dep</artifactId>
<version>1</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
<parent>
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
</parent>
<artifactId>module1</artifactId>
...
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>dep</artifactId>
</dependency>
</dependencies>
...
dep
又取決於subdep
,我想在另一個模塊(module2
)的依賴關係,使用來自相同parent-proj
繼承。重點是使module2
使用相同版本的subdep
dep
取決於沒有明確聲明我的項目中的版本。然而,當我嘗試添加上subdep
的依賴到module2
的Maven不知道是什麼版本的subdep
必須使用:
...
<parent>
<groupId>group1</groupId>
<artifactId>parent-proj</artifactId>
...
</parent>
<artifactId>module2</artifactId>
...
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>subdep</artifactId>
</dependency>
</dependencies>
...
module2$ mvn dependency:tree
...
[ERROR] 'dependencies.dependency.version' for group2:subdep:jar is missing
...
是否有子項目傳遞依賴使用方式在父項目中隱式管理?
因爲如果我決定切換到'dep'的版本2,這取決於'subdep'的更新版本,這樣'subdep'的顯式定義的版本將會覆蓋'dep' v.2依賴樹中'subdep'的版本。因此,每次更改「dep」版本時,都必須手動重新對齊顯式定義。 – vect
@vect我已經更新了我的答案。 「 –
」dep的所有者可能會升級其對subdep的版本依賴關係,即使不通過dep的版本增量讓您知道,您的構建也將無法重現。「 - 另一方面,在'dependencyManagement'中覆蓋'subdep'的一個版本我可能會冒一個錯誤的版本,因爲它不包含'dep'所需的'subdep'版本。而且由於構建時沒有錯誤,只有在集成測試或運行時纔會發現構建的不一致性。 – vect