如何获取工件的依赖关系树?

Itt*_*ayD 102 dependencies build-process maven-2

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

我想我可以创建一个空项目,但我正在寻找更容易的东西(我需要为几个工件做这个).

amr*_*mra 127

1)使用maven依赖插件

仅使用pom.xml创建一个简单项目.添加您的依赖项并运行:

mvn dependency:tree
Run Code Online (Sandbox Code Playgroud)

不幸的是,依赖mojo必须使用pom.xml,否则会出现以下错误:

无法执行mojo:tree.它需要一个具有现有pom.xml的项目,但构建不使用它.

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

在工件的pom.xml中描述了依赖关系.使用maven基础设施找到它.

转到http://search.maven.org/并输入您的groupId和artifactId.

或者您可以访问http://repo1.maven.org/maven2/并首先使用插件groupId导航,稍后使用artifactId并最终使用其版本.

例如,请参阅org.springframework:spring-core

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

依赖工件的一部分是pom.xml.这指定了它的依赖性.你可以在这个pom上执行mvn dependency:tree.

  • 就像我说的,我想避免创建项目的需要 (3认同)
  • 您不必创建新项目。只需查看本地存储库并找到 atifact 的 pom.xml (2认同)

Kay*_*ani 37

您可以使用此maven命令搜索特定工件:

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]
Run Code Online (Sandbox Code Playgroud)

根据文件:

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

想象一下,您正试图在项目的不同模块中找到"log4j-1.2-api"jar文件:

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api
Run Code Online (Sandbox Code Playgroud)

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

  • -Dverbose 已在依赖插件中被弃用,因此除非您使用的是相当旧的版本,否则它不再起作用。 (5认同)
  • 很棒的建议!`-Dverbose`足以向我展示我需要的完整树.如果你不记得`includes`标志或不想提供完整或通配的`groupId` :),将输出管道输入到"less"或类似物并进行快速搜索效果很好 (2认同)
  • 如果没有包含您正在查看的工件的 pom.xml ,这将无法工作。否则你会得到 `[ERROR] 无法执行目标 org.apache.maven.plugins:maven-dependency-plugin:2.8:tree (default-cli): Goal 需要一个项目来执行,但此目录中没有 POM (. ..)。请验证您从正确的目录调用 Maven。-> [帮助 1]` (2认同)

rns*_*rns 16

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

安装后打开 pom.xml,您将能够看到如下所示的“依赖关系分析”选项卡。它还提供了选项来查看仅冲突的依赖关系以及树结构。

在此输入图像描述


Phi*_*all 7

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
Run Code Online (Sandbox Code Playgroud)

你得到

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
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*s M 6

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

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree
Run Code Online (Sandbox Code Playgroud)

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


Sea*_*oyd 5

如果您使用当前版本的m2eclipse(如果您使用 eclipse 和 maven,您应该使用):

选择菜单项

Navigate -> Open Maven POM

并输入您要查找的工件。

pom 将在 pom 编辑器中打开,您可以从中选择选项卡Dependency Hierarchy以查看依赖关系层次结构(顾名思义:-))


Vai*_*den 5

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

结果: 在此输入图像描述


归档时间:

查看次数:

133398 次

最近记录:

6 年,7 月 前