Maven依赖冲突

Amo*_*rma 4 java dependencies project-management pom.xml maven

由一些模块组成的maven项目.我的一个模块是使用谷歌版本的番石榴依赖11.0.2.现在我正在我的项目中集成另一个模块,该模块也使用番石榴但版本14.

所以我希望新模块使用番石榴版本,14但剩下的项目使用番石榴版本11.0.2.我已经尝试将<exclusion></exclusion>guava 添加到新模块中,但它没有用.

任何解决此问题的提示.

更新:@Guillaume Darmont的答案解决了不同模块的问题.但现在我的问题是,新模块有2依赖,其中一个是使用番石榴11.0.2,其他正在使用14.0.如何管理这个.我们可以在模块的pom中单独指定它应该使用哪种版本的番石榴.

use*_*133 5

mvn dependency:tree 命令将有助于确定哪个模块带来了Guava 14 jar文件.

  • 更具体地说,`mvn依赖:tree -Dverbose -Dincludes = com.google.guava`将显示_just_您感兴趣的依赖关系树的部分,并包含有关为什么在每种情况下省略依赖(冲突/重复)的详细信息.[Apache Maven项目 - 使用依赖关系树解决冲突](http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html) (2认同)

Gui*_*ont 5

据我了解你的问题,你可以添加一个<dependencyManagement>用于guava在新模块 pom.xml 中:

<dependencyManagement>
  <dependencies>
      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>14.0.1</version>
      </dependency>
  </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)