由一些模块组成的maven项目。我的一个模块是使用google版本11.0.2
的guava依赖项。现在我正在我的项目中集成另一个模块,该模块也使用guava但版本14
。
所以我希望新模块使用guava版本14
,但剩下的项目使用guava版本11.0.2
。我已经尝试将<exclusion></exclusion>
guava添加到新模块中,但它不起作用。
解决此问题的任何提示。
更新:@Guillaume Darmont的答案解决了不同模块的问题。但现在我的问题是,新模块有2个依赖项,其中一个使用guava 11.0.2
而另一个使用14.0
。如何管理这个。我们可以在模块的pom中单独指定它应该使用哪种版本的番石榴。?
答案 0 :(得分:5)
mvn dependency:tree
命令将帮助确定哪个模块带来了Guava 14 jar文件。
答案 1 :(得分:4)
根据我的理解,您可以在新模块pom.xml中为<dependencyManagement>
添加guava
:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>14.0.1</version>
</dependency>
</dependencies>
</dependencyManagement>
答案 2 :(得分:0)
首先尝试mvn dependency tree
并检查输出可能已从多个项目依赖项中传递11.0.2
,并且您需要直接/间接地向所有依赖项添加排除按照您要排除的特定番石榴版本。
其次解决这场冲突可能不是直截了当的。看看版本号转换(11到14)听起来像是一个重大过渡,你可能有更好的机会保留14版本并排除11个版本。
如果版本更改与您的应用程序不兼容,您几乎没有选择,只能使用OSGi
之类的内容来确保您可以在项目中运行相同库的不同版本。