22

我们将 Maven 3 与 IntelliJ 一起用于我们的 IDE。编译后,我们得到一堆 spring 2.0 的东西被包含在外部库中。如果我查看 Intellij 中的 Maven 项目依赖项,我看不到任何人依赖于 spring 2.0,所以我怀疑这是我们所依赖的东西。

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

4

3 回答 3

14

看起来传递给的模式-Dincludes不正确。

Maven Dependency Plugin的文档中,的语法 -DincludesStrictPatternIncludesArtifactFilter. 从this 子类化的AbstractStrictPatternArtifactFilter的 javadoc 中,

工件模式语法的形式为:

[groupId]:[artifactId]:[type]:[version]

其中每个模式段都是可选的,并且支持完整和部分 * 通配符。空模式段被视为隐式通配符。

例如,org.apache.*将匹配组 id 以 开头的所有工件org.apache.:::*-SNAPSHOT并将匹配所有快照工件。

也许你应该在mvn dependency:tree没有的情况下运行-Dincludes,看看它是否显示了spring 2.0相关的依赖项。或者,为 指定适当的模式-Dincludes

于 2011-01-05T04:38:42.423 回答
10

您正在搜索的格式是错误的。试试这个:

mvn dependency:tree -Dverbose -Dincludes=:spring*::

(搜索任何具有以 spring 开头的 groupId 的工件)

或这个:

mvn dependency:tree -Dverbose -Dincludes=org.springframework

(使用 artifactId org.springframework 搜索任何工件)

于 2011-01-05T08:19:42.117 回答
3

为什么不使用 intellij 并轻松修复它。打开您的 pom.xml,右键单击(调用上下文菜单)并选择 UML > 显示依赖项(假设您启用了 UML 插件)。Idea 将标记所有重复的依赖项,您可以使用 ALT+Enter 组合排除依赖项。@另见:http : //blogs.jetbrains.com/idea/2010/05/maven-dependencies-diagram/

于 2011-01-06T20:18:22.580 回答