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

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


当前回答

1)使用maven依赖插件

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

mvn dependency:tree

(多模块Maven项目的版本:mvn编译依赖项:树)

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

不能执行魔咒树。它需要一个具有现有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。

其他回答

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

一旦安装打开pom.xml,你就能看到如下所示的依赖分析选项卡。它还提供了仅将冲突的依赖项视为树状结构的选项。

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

您可以使用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

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

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

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

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

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

请参见如何列出来自存储库的工件的可传递依赖项?

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

结果:

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