一个由一些模块组成的maven项目。我的一个模块是使用谷歌版本11.0.2的芭乐依赖。现在我正在我的项目中集成另一个模块,该模块也使用芭乐,但版本为14。
所以我希望新模块使用芭乐版本14,但其余项目使用芭乐版本11.0.2。我尝试将<exclusion></exclusion> of guava添加到新模块中,但没有成功。
任何解决这个问题的技巧。
更新:@Guillaume Darmont的答案解决了不同模块的问题。但现在我的问题是,新模块有两个依赖项,一个是使用芭乐11.0.2,另一个是使用14.0。如何管理它。我们可以在模块的pom中单独指定它应该使用哪个版本的芭乐吗?
发布于 2013-06-27 14:27:42
我理解你的问题,你可以在你的新模块pom.xml中添加一个guava的<dependencyManagement>:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>14.0.1</version>
</dependency>
</dependencies>
</dependencyManagement>发布于 2013-06-27 14:24:52
mvn dependency:tree命令将帮助确定哪个模块带来了Guava14JAR文件。
发布于 2013-06-27 14:31:14
首先,尝试mvn dependency tree并检查输出,可能已经从多个项目依赖项中过渡地引用了11.0.2,并且您需要直接/间接地将排除添加到所有依赖项中,拉下您尝试排除的特定芭乐版本。
其次,解决这种冲突可能不是一帆风顺的。在我看来,版本号转换(11到14)听起来像是一个主要的转换,您可能有更好的机会保留14版本,并排除11之类的东西。
如果版本更改与您的应用程序不兼容,您几乎别无选择,只能使用诸如OSGi之类的工具来确保您可以在项目中运行同一个库的不同版本。
https://stackoverflow.com/questions/17335255
复制相似问题