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

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


当前回答

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

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

其他回答

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

选择菜单项

导航->打开Maven POM

然后输入你要找的藏物。

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

如果任何使用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 

depgraph-maven-plugin的for-artifact目标应该做你想做的事情。获取org.jboss.ws依赖关系图:jbossws-common-tools:1.3.2。最后你只需做

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或在线应用程序。