dependency:tree可用于查看给定项目的依赖树。但我需要的是看到第三方工件的依赖树。
dependency:tree
我想我可以创建一个空项目,但是我正在寻找一些更简单的东西(我需要为几个工件这样做)。
只使用pom.xml创建一个简单的项目。添加你的依赖项并运行:
pom.xml
mvn dependency:tree
(多模块Maven项目的版本:mvn compile dependency:tree )
mvn compile dependency:tree
不幸的是,依赖运气必须使用pom.xml,否则你会得到以下错误:
不能执行魔咒树。它需要一个具有现有pom.xml的项目,但构建没有使用。
依赖项在工件的pom.xml中描述。使用maven基础设施找到它。
转到https://search.maven.org/并输入你的groupId和artifactId。
groupId
artifactId
或者你可以去https://repo1.maven.org/maven2/,首先使用插件groupId导航,然后使用artifactId,最后使用它的版本。
例如,参见org.springframework: spring核心
依赖工件的一部分是pom.xml。它指定了它的依赖关系。你可以在这个pom上执行mvn dependency:tree。
如果你使用当前版本的m2eclipse(如果你使用eclipse和maven,你应该这样做):
选择菜单项
Navigate -> Open Maven POM
然后输入你要找的藏物。
pom将在pom编辑器中打开,从中您可以选择选项卡Dependency Hierarchy来查看依赖层次结构(顾名思义:-))
Dependency Hierarchy
如果您的工件不是给定项目的依赖项,最好的方法是使用存储库搜索引擎。其中许多描述了给定工件的依赖关系。
解决方案是使用构件的pom.xml文件调用dependency:tree:
mvn -f "$HOME/.m2/repository/$POM_PATH" 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
更多信息可以找到在这里。
mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:tree -Dverbose=true
如果任何使用IntelliJ的人都想直接在IDE中看到依赖树,那么他们可以安装Maven Helper插件插件。
一旦安装打开pom.xml,你就能看到依赖关系分析选项卡,如下所示。它还提供了仅将冲突的依赖项视为树状结构的选项。
当使用IntelliJ时,你有一个用于Maven依赖项探索的一键工具:https://www.jetbrains.com/help/idea/work-with-maven-dependencies.html
depgraph-maven-plugin的for-artifact目标应该做你想做的事情。要获得org.jboss.ws:jbossws-common-tools:1.3.2.Final的依赖关系图,只需这样做
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或在线应用程序。