Answers:
仅使用pom.xml创建一个简单项目。添加您的依赖项并运行:
mvn dependency:tree
不幸的是,依赖mojo必须使用pom.xml,否则会出现以下错误:
无法执行mojo:树。它需要一个具有现有pom.xml的项目,但是构建未使用该项目。
依赖关系在工件的pom.xml中描述。使用Maven基础架构找到它。
转到http://search.maven.org/并输入您的groupId和artifactId。
或者,您可以转到http://repo1.maven.org/maven2/并首先使用插件groupId导航,然后使用artifactId导航,最后使用其版本。
例如,参见org.springframework:spring-core
依赖项工件的一部分是pom.xml。那指定了它的依赖性。您可以在此pom上执行mvndependency:tree。
pom.xml
文件的项目),您可能会遇到错误。mvn compile dependency:tree
然后尝试。
如果您不愿意创建一个示例项目并向其中添加第3方依赖关系,则可以运行以下命令以查看依赖关系的完整层次结构。
您可以使用以下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
更多信息可以在这里找到。
编辑:请注意,尽管使用详细参数有很多优点,但在某些情况下可能不太准确。因为它使用Maven 2算法,并且与Maven 3一起使用时可能会给出错误的结果。
-Dverbose
足以向我展示我所需的完整树。输出管道,以less
或类似的,做一个快速的搜索,如果你不记得的伟大工程,includes
标志或不愿意提供全部或通配符groupId
:)
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:tree (default-cli): Goal requires a project to execute but there is no POM in this directory (...). Please verify you invoked Maven from the correct directory. -> [Help 1]
解决方案是使用工件的pom.xml文件调用dependency:tree:
mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree
如果您使用的是当前版本的m2eclipse(如果使用eclipse和maven,则应使用该版本):
选择菜单项
Navigate -> Open Maven POM
并输入您要查找的工件。
pom将在pom编辑器中打开,您可以从中选择选项卡Dependency Hierarchy
以查看依赖项层次结构(顾名思义:-))
如果您的工件不是给定项目的依赖项,那么最好的选择是使用存储库搜索引擎。其中许多描述了给定工件的依赖性。
我知道这篇文章已经很老了,但是,如果任何使用IntelliJ的人都想直接在IDE中查看依赖树,那么他们可以安装Maven Helper Plugin插件。
安装完成后,打开pom.xml,您将能够看到如下所示的Dependency Analyze选项卡。它还提供选项以查看仅冲突的依赖关系,也可以将其视为树结构。