1
我的項目依賴於第三方庫的關係在我的POM定義如下:解決Maven的傳遞依賴衝突
<dependency>
<groupId>thirdparty</groupId>
<artifactId>main</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
反過來這第三方主庫依賴於其他兩個庫,這裏有一個部分依賴於它的POM定義管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>thirdparty</groupId>
<artifactId>x</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>thirdparty</groupId>
<artifactId>y</artifactId>
<version>1.0.0</version>
</dependency>
...
現在第三方X圖書館在其POM定義Y上的依賴關係是這樣的:
<dependency>
<groupId>thirdparty</groupId>
<artifactId>y</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
請注意快照版本!這看起來像是第三方poms的問題,但我無法控制它。
但有趣的是,如果您嘗試使用maven構建主要的第三方項目,它會使用(解決並安裝到本地回購)正確的第三方:y:1.0.0版本的工件。但是,當我構建我的原始項目時,它會嘗試解析第三方的快照版本:y。
我的問題是:
爲什麼會出現這種情況?我確信maven應該選擇最接近項目根目錄的工件版本,在我的情況下,這將是1.0.0。
有沒有什麼辦法可以解決這個問題,而不需要添加顯式的依賴到第三方:y:1.0.0到我的項目的pom?
您是否嘗試使用'thirdparty:main:1.0.0'而不是'thirdparty:main:1.0.0-SNAPSHOT'? –
Usualy沒有理由使用第三方庫的快照版本。如果你想確保某個版本,你可以在你自己的pom中指定你想要的版本(用你想要的版本自己指定依賴),並且絕對可以肯定的是,將它從依賴它的依賴中排除(shouldn不需要,但是這種方式你首先要清楚是什麼導致了它的存在)。 –