如何生成类Maven Repository的‘Used by’依赖使用报告?
解决Maven模块依赖使用情况的报告生成方案
一、适用的Maven插件推荐
1. Maven Dependency Plugin
这是Maven官方自带的核心插件,完全适配你的多模块依赖分析场景:
- 单模块依赖分析:执行命令
mvn dependency:analyze,会输出已使用的依赖和未使用的依赖清单,其中已使用部分就是该模块实际用到的第三方POM维护的Jar包。 - 多模块批量分析:在父POM目录执行
mvn dependency:analyze -DfailOnWarning=false,每个模块的target目录下会生成dependency-analyze-report.xml文件,里面包含该模块的依赖使用明细。 - 精准过滤:用
mvn dependency:tree -Dincludes=指定groupId:*命令,可只展示第三方POM中对应groupId下的Jar包在模块中的引用关系,输出更聚焦。
2. DepGraph Maven Plugin
能生成结构化的依赖图谱,支持按模块和依赖分组展示:
- 示例命令:
mvn com.github.ferstl:depgraph-maven-plugin:graph -Dincludes=你的第三方POM的groupId:* - 可输出文本、HTML或Graphviz格式的报告,直观展示哪些模块引用了第三方POM中的特定Jar包。
3. Dependency Track Plugin
适合需要长期可视化监控的项目,可将依赖数据导入Dependency Track平台,生成交互式的依赖使用图谱,支持按模块筛选查看第三方Jar的引用情况。
二、自定义脚本辅助汇总
如果插件输出不够贴合需求,可结合脚本处理:
- 遍历所有模块,执行
mvn dependency:list -DoutputFile=deps.txt -DexcludeTransitive,导出每个模块的直接依赖列表。 - 用Python/Shell脚本将第三方POM的Jar包清单与各模块的
deps.txt对比,提取匹配项,生成统一的汇总报告,示例格式:模块名称 使用的第三方Jar包 module-a spring-core, commons-lang3 module-b spring-web, commons-io
三、关键注意事项
- 确保所有模块正确继承维护第三方Jar包的父POM,否则依赖分析会出现偏差。
- 使用
-DexcludeTransitive参数可过滤传递依赖,只保留模块直接声明的、来自第三方POM的Jar包。 - 针对Spring Boot等框架项目,需配置
spring-boot-maven-plugin,确保依赖分析包含框架管理的构件。
内容的提问来源于stack exchange,提问作者SuhasD
相关产品推荐
相关产品推荐

