在 Maven 中查看依赖树?

Posted

技术标签:

【中文标题】在 Maven 中查看依赖树?【英文标题】:View a dependency tree in Maven? 【发布时间】:2011-10-11 10:22:42 【问题描述】:

我想确保我的 Maven 项目中没有包含重复的库。我从几个不同的存储库中提取了很多依赖项,包括 main、Spring 的存储库和 JBoss 的存储库。如何查看依赖关系图,以确保我不依赖于单个库的多个版本?

如果我包含像 org.springframework:spring-core:3.0.1.RELEASE org.springframework:org.springframework.spring-core:3.0.5.RELEASE 这样的东西,这实际上会显示为不同的依赖项,这听起来很奇怪,因为 Spring 的存储库会命名事物奇怪。我该怎么做才能确保我没有重复的依赖项?

【问题讨论】:

【参考方案1】:

dependency:tree maven 插件应该做你想做的事情并显示树。

或者force Maven2 to copy dependencies into target/lib 复制target/lib 目录中的工件,该目录也应该显示重复项,但您仍然需要对~/.m2/repository 中的所有 POM 进行 grep 以查看哪个库正在手动提取哪个版本以及对于大型本地存储库来说会很耗时。

【讨论】:

正是我需要的。先生,你并不缺乏胜利。【参考方案2】:

重复的库可能是个问题,但即使没有重复的库也可能存在重复的类。 JBoss Tattletale 可以分析一组 jar 文件并生成列出所有重复类的报告。有一个用于运行报告的 Maven 插件 - 请参阅 http://docs.jboss.org/tattletale/userguide/1.2/en-US/html/maven.html

【讨论】:

【参考方案3】:

如果您想获得依赖关系树的图形、可搜索表示(包括项目中的所有模块、传递依赖关系和驱逐信息),请查看 UpdateImpact:https://app.updateimpact.com(免费服务)。

使用搜索,您可以了解给定库的导入次数、导入的模块和版本,以及验证旧版本的库是否被新版本淘汰。

免责声明:我是该网站的开发者之一

【讨论】:

停止垃圾邮件/计划以推广产品。我至少在每个问题中都看到了您的广告。 该服务是免费的,因此它与其他指向网站的指针相比,不再是一个广告。而且我认为关于这个主题总共有 2 个问题,所以几乎不是“每个”:)

以上是关于在 Maven 中查看依赖树?的主要内容,如果未能解决你的问题,请参考以下文章

maven 查看依赖树结构

Maven查看依赖树

maven优化依赖常用命令

IDEA依赖冲突分析神器—Maven Helper

Maven查看JAR包的依赖关系

IDEA常用插件