dependency:tree
可用于查看给定项目的依赖关系树。但我需要的是查看第 3 方工件的依赖关系树。
我想我可以创建一个空项目,但我正在寻找更简单的东西(我需要为多个工件执行此操作)。
只用
pom.xml
创建一个简单的项目。添加你的依赖并运行:
mvn dependency:tree
(多模块 Maven 项目的版本:
mvn compile dependency:tree
)
不幸的是dependency mojo必须使用
pom.xml
否则你会得到以下错误:
无法执行 mojo: tree。它需要一个具有现有
的项目,但构建没有使用一个。pom.xml
pom.xml
依赖项在您的工件的
pom.xml
中描述。使用 Maven 基础设施找到它。
转到https://search.maven.org/并输入您的
groupId
和artifactId
.
或者您可以转到 https://repo1.maven.org/maven2/ 并首先使用插件
groupId
导航,然后使用 artifactId
最后使用它的版本。
例如参见org.springframework:spring-core
依赖工件的一部分是
pom.xml
。这指定了它的依赖性。你可以在这个pom上执行mvn dependency:tree
。
如果您费心创建一个示例项目并将您的第 3 方依赖项添加到其中,那么您可以运行以下命令以查看依赖项的完整层次结构。
您可以使用此 maven 命令搜索特定的 artifact:
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 的人想直接在 IDE 中查看依赖树,那么他们可以安装 Maven Helper Plugin 插件。
安装后打开 pom.xml,您将能够看到如下所示的Dependency Analyze 选项卡。它还提供选项来查看仅存在冲突的依赖项以及树结构。
如果你使用当前版本的 m2eclipse(如果你使用 eclipse 和 maven,你应该这样做):
选择菜单项
Navigate -> Open Maven POM
然后输入你要找的神器
pom 将在 pom 编辑器中打开,您可以从中选择选项卡
Dependency Hierarchy
以查看依赖层次结构(顾名思义:-))
使用 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
的依赖关系图,您只需做
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 或在线应用程序。
如果您的工件不是给定项目的依赖项,您最好的选择是使用 存储库搜索引擎。其中许多描述了给定工件的依赖关系。