如何获取工件的依赖树?

问题描述 投票:0回答:9

dependency:tree
可用于查看给定项目的依赖关系树。但我需要的是查看第 3 方工件的依赖关系树。

我想我可以创建一个空项目,但我正在寻找更简单的东西(我需要为多个工件执行此操作)。

maven-2 build-process dependencies
9个回答
347
投票

1)使用maven依赖插件

只用

pom.xml
创建一个简单的项目。添加你的依赖并运行:

mvn dependency:tree

(多模块 Maven 项目的版本:

mvn compile dependency:tree 

不幸的是dependency mojo必须使用

pom.xml
否则你会得到以下错误:

无法执行 mojo: tree。它需要一个具有现有

pom.xml
的项目,但构建没有使用一个。

2) 在 Maven 中央存储库中找到您的工件
pom.xml

依赖项在您的工件的

pom.xml
中描述。使用 Maven 基础设施找到它。

转到https://search.maven.org/并输入您的

groupId
artifactId
.

或者您可以转到 https://repo1.maven.org/maven2/ 并首先使用插件

groupId
导航,然后使用
artifactId
最后使用它的版本。

例如参见org.springframework:spring-core

3) 对你的工件使用 maven 依赖插件

依赖工件的一部分是

pom.xml
。这指定了它的依赖性。你可以在这个pom上执行
mvn dependency:tree


91
投票

如果您费心创建一个示例项目并将您的第 3 方依赖项添加到其中,那么您可以运行以下命令以查看依赖项的完整层次结构。

您可以使用此 maven 命令搜索特定的 artifact

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]

根据文档:

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

假设您正在尝试在项目的不同模块中查找“log4j-1.2-api”jar 文件:

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api

可以在这里找到更多信息。

编辑: verbose 标志已在版本 3.2.0 中重新引入。 您可以使用以下具体版本:

mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:tree -Dverbose=true 

18
投票

解决方案是用工件的pom.xml文件调用dependency:tree:

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree

另请参阅如何从存储库中列出工件的传递依赖性?


15
投票

如果任何使用 IntelliJ 的人想直接在 IDE 中查看依赖树,那么他们可以安装 Maven Helper Plugin 插件。

安装后打开 pom.xml,您将能够看到如下所示的Dependency Analyze 选项卡。它还提供选项来查看仅存在冲突的依赖项以及树结构。


5
投票

如果你使用当前版本的 m2eclipse(如果你使用 eclipse 和 maven,你应该这样做):

选择菜单项

Navigate -> Open Maven POM

然后输入你要找的神器

pom 将在 pom 编辑器中打开,您可以从中选择选项卡

Dependency Hierarchy
以查看依赖层次结构(顾名思义:-))


5
投票

使用 IntelliJ 时,您有一个用于 Maven 依赖探索的一键式工具:https://www.jetbrains.com/help/idea/work-with-maven-dependencies.html

结果:


5
投票

depgraph-maven-pluginfor-artifact目标应该做你想做的。要获得

org.jboss.ws:jbossws-common-tools:1.3.2.Final
的依赖关系图,您只需做

mvn com.github.ferstl:depgraph-maven-plugin:3.3.0:for-artifact -DgroupId=org.jboss.ws -DartifactId=jbossws-common-tools -Dversion=1.3.2.Final -DgraphFormat=text -DshowGroupIds=true -DshowVersions=true

你得到

org.jboss.ws:jbossws-common-tools:1.3.2.Final:compile
+- org.jboss.ws:jbossws-api:1.1.2.Final:compile
+- org.apache.ant:ant:1.7.1:provided
|  \- org.apache.ant:ant-launcher:1.7.1:provided
+- gnu.getopt:java-getopt:1.0.13:provided
+- log4j:log4j:1.2.14:provided
\- junit:junit:3.8.2:test

无需创建 Maven 项目或使用 IDE 或在线应用程序。


1
投票

如果您的工件不是给定项目的依赖项,您最好的选择是使用 存储库搜索引擎。其中许多描述了给定工件的依赖关系。


0
投票

您可以使用 -Dincludes 标志过滤特定工件:

mvn dependency:tree -Dincludes=<artifact>

您可以在这里找到更多信息

© www.soinside.com 2019 - 2024. All rights reserved.