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

时间:2010-07-27 11:03:21

标签: maven-2 build-process dependencies

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

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

8 个答案:

答案 0 :(得分:97)

1)使用maven dependency plugin

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

mvn dependency:tree

不幸的是dependency 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

答案 1 :(得分:26)

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

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

可以找到更多信息here

答案 2 :(得分:4)

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

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

另见How to list the transitive dependencies of an artifact from a repository?

答案 3 :(得分:2)

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

选择菜单条目

Navigate -> Open Maven POM

并输入您要查找的工件。

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

答案 4 :(得分:2)

I created an online tool to do this。只需以pom文件格式粘贴任何依赖项,然后基于中央Maven存储库生成该工件的依赖关系树。

答案 5 :(得分:1)

如果您的工件不是给定项目的依赖项,那么最好的办法是使用repository search engine。其中许多描述了给定工件的依赖性。

答案 6 :(得分:0)

如果您想获得依赖关系树的图形化,可搜索表示(包括项目中的所有模块,传递依赖关系和驱逐信息),请查看UpdateImpact:https://app.updateimpact.com(免费服务)。

免责声明:我是该网站的开发者之一

答案 7 :(得分:0)

我知道这篇文章已经很老了,但是,如果使用 IntelliJ 的任何人想要直接在IDE中查看依赖关系树,那么他们可以安装Maven Helper Plugin插件。

一旦安装打开pom.xml,您将看到如下所示的 Dependency Analyze 标签。它还提供了选项,以查看仅冲突的依赖关系,也可以将其视为树结构。

enter image description here