Maven如何解决依赖冲突?

时间:2016-08-10 08:06:39

标签: maven

假设我们有一个项目A.

  • 项目A依赖于Project B版本1.0
  • 项目A依赖于Project C版本2.0
  • 项目C(版本2.0)依赖于Project B版本2.0

在这种情况下,Maven将如何解决冲突?

2 个答案:

答案 0 :(得分:1)

它使用Project 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解决版本与最近获胜策略的冲突。

输出就是这样的:

[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)

答案 1 :(得分: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