在 Maven 2 中,我如何知道传递依赖来自哪个依赖?

Posted

技术标签:

【中文标题】在 Maven 2 中,我如何知道传递依赖来自哪个依赖?【英文标题】:In Maven 2, how do I know from which dependency comes a transitive dependency? 【发布时间】:2010-09-07 05:49:02 【问题描述】:

我想知道我的 pom.xml 中描述的哪个依赖在我的目标目录中带来了传递依赖。

更准确地说,我的 WEB-INF/lib 目录中有库“poi-2.5.1-final-20040804.jar”,我想知道我的 pom.xml 中的哪个依赖项带来了它。

【问题讨论】:

【参考方案1】:

要添加到 @David Crow,这里是来自 Maven 站点的 a dependency:tree example:

mvn dependency:tree -Dincludes=velocity:velocity

可能输出

[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO]       \- velocity:velocity:jar:1.4:compile

【讨论】:

这对我不起作用;我得到的只是关于不受支持的“遗留”值的错误。运行@David Crow 的版本(即没有速度标志)运行良好。【参考方案2】:

使用Maven Dependency Plugin:

mvn dependency:tree

【讨论】:

【参考方案3】:

如果您使用 eclipse 和 m2eclipse plugin,那么有一个图形版本的依赖树,您可以在其中按范围等进行过滤。

【讨论】:

【参考方案4】:

如果你用“-x”开关运行maven,它会打印出大量的诊断信息,我想相关的依赖路径可以从那里得到。

【讨论】:

其实这个答案很有用。我面对的是众所周知的aether class undefined bug caused by upgrading my Maven from 3.0 to 3.3,下面的命令显示另一个 maven 插件仍在采购 org.apache.maven:maven-core 的 3.0.5 版本:mvn -X dependency:tree -Dverbose |grep -C20 sonatype.aether 虽然“-X”(大写,备用名称“--debug”)通常很有用,但它不会告诉您版本号的来源。无论如何,不​​在 Maven 3.6.0 上。【参考方案5】:

你可以有很多报告

mvn 网站

其中之一是依赖报告。

【讨论】:

【参考方案6】:

如果您已使用 mvn site 为项目生成站点,则依赖信息也包含在项目信息/依赖项报告中。

【讨论】:

以上是关于在 Maven 2 中,我如何知道传递依赖来自哪个依赖?的主要内容,如果未能解决你的问题,请参考以下文章

如何剔除Maven项目中多余的依赖项?

怎么看pom里面的附属包来自哪个

清理 Maven 依赖管理

Maven 依赖项 - 版本与更新

如何将本地 Maven m2 作为属性传递给 Gradle?

[Maven实战]传递性依赖