2016-08-10 148 views
1

假設我們有一個項目A.Maven的解決依賴衝突

  • 項目A對項目B版本的依賴性1.0
  • 項目A對項目C版本2.0
  • 項目C(依賴版本2.0)依賴項目B版本2.0

在這種情況下,Maven如何解決衝突?

+0

我不滿意這個問題。根據http://stackoverflow.com/help/how-to-ask,你應該「解釋你是如何遇到你想要解決的問題的,以及任何阻礙你自己解決問題的困難。」我沒有看到任何障礙來防止自己解決問題。 – michaldo

+0

這是一個多模塊構建? – khmarbaise

+0

@khmarbaise沒有。我將項目B和項目C作爲項目A的pom.xml中的依賴項。 – erolkaya84

回答

1

它會與項目B V 1.0

打造您可以使用http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html 看到,它省略B模式2.0的原因1.0是越來越近了。

從上面頁:

通過默認 Maven的解決具有最近贏的策略版本衝突。

Output'd是類似的東西:

[INFO] [dependency:tree] 
[INFO] Project A 
[INFO] +- Project-B:jar:1.0:compile 
[INFO] \- Project-C:jar:2.0:compile 
[INFO] \- (Project-B:jar:2.0:compile - ommited for conflicts with 1.0) 
0

,我發現這個解釋,這是真的對我很有幫助。

最近的定義意味着該版本中使用將是一個最接近於樹相依的項目,

如。如果將A,B和C的依賴關係定義爲A→B→C→D 2.0和A→E→D 1.0,則在構建A時將使用D 1.0,因爲從A到D的路徑通過E是更短。您可以在A中明確添加依賴項到D 2.0以強制使用D 2.0