首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven依赖冲突

Maven依赖冲突
EN

Stack Overflow用户
提问于 2013-06-27 13:37:18
回答 3查看 11.4K关注 0票数 5

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

所以我希望新模块使用芭乐版本14,但其余项目使用芭乐版本11.0.2。我尝试将<exclusion></exclusion> of guava添加到新模块中,但没有成功。

任何解决这个问题的技巧。

更新:@Guillaume Darmont的答案解决了不同模块的问题。但现在我的问题是,新模块有两个依赖项,一个是使用芭乐11.0.2,另一个是使用14.0。如何管理它。我们可以在模块的pom中单独指定它应该使用哪个版本的芭乐吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-27 14:27:42

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

代码语言:javascript
复制
<dependencyManagement>
  <dependencies>
      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>14.0.1</version>
      </dependency>
  </dependencies>
</dependencyManagement>
票数 5
EN

Stack Overflow用户

发布于 2013-06-27 14:24:52

mvn dependency:tree命令将帮助确定哪个模块带来了Guava14JAR文件。

票数 5
EN

Stack Overflow用户

发布于 2013-06-27 14:31:14

首先,尝试mvn dependency tree并检查输出,可能已经从多个项目依赖项中过渡地引用了11.0.2,并且您需要直接/间接地将排除添加到所有依赖项中,拉下您尝试排除的特定芭乐版本。

其次,解决这种冲突可能不是一帆风顺的。在我看来,版本号转换(11到14)听起来像是一个主要的转换,您可能有更好的机会保留14版本,并排除11之类的东西。

如果版本更改与您的应用程序不兼容,您几乎别无选择,只能使用诸如OSGi之类的工具来确保您可以在项目中运行同一个库的不同版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17335255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档