如何找出Maven包含罐子的原因?

时间:2011-01-04 19:58:23

标签: java spring maven intellij-idea maven-3

我们在IDE中使用带有IntelliJ的Maven 3。在编译之后,我们得到了一堆包含在外部库中的spring 2.0内容。如果我查看Intellij中的Maven Projects依赖项,我没有看到任何依赖于spring 2.0的人,所以我怀疑它依赖于它依赖于它。

我的问题是如何追踪这个?我尝试了mvn dependency:tree -Dverbose -Dincludes=spring-aop甚至是-Dincludes=spring,但是从root或我知道使用spring的子模块目录运行时没有得到任何结果。

3 个答案:

答案 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/