Java 如何找出Maven包含jar的原因?

Java 如何找出Maven包含jar的原因?,java,spring,maven,intellij-idea,maven-3,Java,Spring,Maven,Intellij Idea,Maven 3,我们在IDE中使用带IntelliJ的Maven 3。编译之后,我们得到了一堆Spring2.0的东西,这些东西包含在外部库中。如果我查看Intellij中的Maven项目依赖项,我没有看到任何人对Spring2.0有依赖,所以我怀疑这是我们所依赖的东西 我的问题是,我将如何追踪这一点?我尝试了一个mvn依赖项:tree-Dverbose-Dincludes=spring aop甚至-Dincludes=spring,但是从根目录或我知道正在使用spring的子模块目录运行时没有得到任何结果 传

我们在IDE中使用带IntelliJ的Maven 3。编译之后,我们得到了一堆Spring2.0的东西,这些东西包含在外部库中。如果我查看Intellij中的Maven项目依赖项,我没有看到任何人对Spring2.0有依赖,所以我怀疑这是我们所依赖的东西


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

传递给
-Dincludes
的模式似乎不正确

从的文档中,
-Dincludes
的语法由
StrictPatterns IncludesArtifactFilter
定义。从其子类的javadoc中

工件模式语法是 表格:

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

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

例如,
org.apache.*
将匹配其组的所有工件 id以
org.apache.
开头,并且
:*-快照将匹配所有快照
人工制品


也许您应该运行
mvn dependency:tree
,而不运行
-Dincludes
,看看它是否显示了与spring2.0相关的依赖关系。或者,为搜索的格式错误的
-Dincludes
指定适当的模式。试试这个:

mvn dependency:tree -Dverbose -Dincludes=:spring*::
(搜索groupId以spring开头的任何工件)

或者这个:

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

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

为什么不使用intellij并轻松修复它呢。 打开pom.xml,右键单击(调用上下文菜单)并选择UML>ShowDependencies(假设启用了UML插件)。 Idea将标记所有重复的依赖项,您可以使用ALT+Enter组合来排除依赖项。 @另见:

我尝试使用上面的命令,以理解为什么包含特定的jar。但是,上面的maven命令正在执行,并表示构建成功,但没有关于依赖关系的信息。