我们在IDE中使用带有IntelliJ的Maven 3。在编译之后,我们得到了一堆包含在外部库中的spring 2.0内容。如果我查看Intellij中的Maven Projects依赖项,我没有看到任何依赖于spring 2.0的人,所以我怀疑它依赖于它依赖于它。
我的问题是如何追踪这个?我尝试了mvn dependency:tree -Dverbose -Dincludes=spring-aop
甚至是-Dincludes=spring
,但是从root或我知道使用spring的子模块目录运行时没有得到任何结果。
答案 0 :(得分:13)
看起来传递给-Dincludes
的模式不正确。
在Maven Dependency Plugin的文档中, -Dincludes
的语法由StrictPatternIncludesArtifactFilter
定义。从AbstractStrictPatternArtifactFilter的javadoc开始,
工件模式语法是 形式:
[groupId]:[artifactId]:[type]:[version]
每个模式段都是可选的,并支持full和 部分*通配符。一个空模式 段被视为隐式 通配符。
例如,
org.apache.*
将匹配其组的所有工件 id以org.apache.
开头,:::*-SNAPSHOT
将与所有快照匹配 伪影。
也许您应该在没有mvn dependency:tree
的情况下运行-Dincludes
并查看它是否显示 spring 2.0 相关的依赖项。或者,为-Dincludes
指定适当的模式。
答案 1 :(得分:10)
您要搜索的格式错误。试试这个:
mvn dependency:tree -Dverbose -Dincludes=:spring*::
(搜索具有以spring开头的groupId的任何工件)
或者这个:
mvn dependency:tree -Dverbose -Dincludes=org.springframework
(使用artifactId org.springframework搜索任何工件)
答案 2 :(得分:3)
为什么不使用intellij并轻松修复它。 打开你的pom.xml,右键单击(调用上下文菜单)并选择UML>显示依赖关系(assumin你启用了UML插件)。 Idea会标记所有重复的依赖项,您可以使用ALT + Enter组合来排除依赖项。 @也可以看看: http://blogs.jetbrains.com/idea/2010/05/maven-dependencies-diagram/