2016-08-10 38 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