假设我有一个复杂的项目,有很多依赖项。依赖项的版本由许多导入作用域poms管理。我的项目依赖于工件group:artifact,它依赖于工件group:transitive-dependency。当我运行dependency:tree时,我看到如下所示:
+- group:artifact:jar:1.3
+- group:transitive-dependency:jar:1.1 (version managed from 1.3)问题是group:artifact:1.3需要group:transitive-dependency 1.3或更高版本。当然,其中一个导入的pom强制使用了错误的版本。但是,除了搜索所有这些内容之外,是否有其他方法可以知道哪一个是?
发布于 2013-05-18 13:25:34
您应该尝试maven-enforcer-plugin并将其配置为执行DependencyConvergence,例如
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<DependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>这将向您显示哪些顶级依赖项在其依赖关系树中具有其他依赖项的不同版本。然后,您可以使用排除来抑制不想要的依赖变量。
发布于 2014-02-04 17:39:10
当两个或更多的父Poms与相同的工件冲突时,就会发生这种情况。
例如:
[INFO] | \- com.rbs.gbm.risk:framework-core:jar:1.6.6:compile
[INFO] | +- com.rbos.gbm.risk:log4jextensions:jar:2.3:compile (version managed from 2.2)
[INFO] | +- oro:oro:jar:2.0.8:compile在我的例子中,框架核心提到了log4jextentsions 2.2。我的超级pom显示的是log4jextentsions 2.3。不知何故,框架核心说服了maven使用log4jextentsions 2.2。
稍后,当我将framework-core pom更新为使用2.3时:
[INFO] | \- com.rbs.gbm.risk:framework-core:jar:1.6.6:compile
[INFO] | +- com.rbos.gbm.risk:log4jextensions:jar:2.3:compile
[INFO] | +- oro:oro:jar:2.0.8:compilehttps://stackoverflow.com/questions/14319018
复制相似问题