用途
本技能用于对 Maven 项目依赖进行审计,识别过期版本、安全漏洞与依赖冲突。适用于以下场景:用户要求“检查依赖”“审计依赖”“过期依赖”;发布前检查;定期维护(建议每月一次);安全公告发布后。
主要能力
审计流程分为四步:检查更新、分析依赖树、安全扫描、生成报告。
1. 检查过期依赖。 命令:mvn versions:display-dependency-updates。输出示例会显示各依赖当前版本与较新版本。更新按类别划分:安全类(新版本修复 CVE,应尽快更新)、重大版本(x.0.0 变更,需审阅变更日志并充分测试)、次要版本(x.y.0 变更,通常安全但需测试)、补丁版本(x.y.z 变更,安全,最小测试)。插件更新同样可用 mvn versions:display-plugin-updates 检查。
2. 分析依赖树。 完整树:mvn dependency:tree;过滤特定依赖:mvn dependency:tree -Dincludes=org.slf4j。需关注标记:(omitted for conflict) 表示版本冲突已由 Maven 解决;(omitted for duplicate) 表示同版本无问题;同一库存在多个版本可能导致运行时问题。分析未使用依赖使用 mvn dependency:analyze,会输出“已使用但未声明的依赖”与“已声明但未使用的依赖”。
3. 安全漏洞扫描。 方案 A:OWASP Dependency-Check(推荐),在 pom.xml 中添加 org.owasp:dependency-check-maven 插件(版本 9.0.7),运行 mvn dependency-check:check,在 target/dependency-check-report.html 生成 HTML 报告。方案 B:mvn dependency:analyze-report。方案 C:使用 GitHub 时可在仓库设置中启用 Dependabot 告警。严重级别按 CVSS 分数划分:9.0–10.0 严重(立即更新)、7.0–8.9 高(数天内更新)、4.0–6.9 中(数周内更新)、0.1–3.9 低(方便时更新)。
4. 生成审计报告。 报告格式包含项目、日期、依赖总数,以及安全 issue 表格(依赖、当前版本、CVE、严重级别、修复版本)、过期依赖(重大更新需审阅、次要/补丁更新安全)、检测到的冲突、未使用依赖、建议(立即处理、本迭代处理、规划处理)。
使用方式
发布前快速检查: mvn versions:display-dependency-updates -q。完整审计: 依次运行 mvn versions:display-dependency-updates && mvn dependency:analyze && mvn dependency-check:check。查找某依赖为何被引入: mvn dependency:tree -Dincludes=commons-logging。强制指定版本解决冲突: 在 <dependencyManagement> 中声明目标版本。排除传递依赖: 在 <dependency> 中使用 <exclusions>。
常用命令参考
- 过期依赖:
mvn versions:display-dependency-updates - 过期插件:
mvn versions:display-plugin-updates - 依赖树:
mvn dependency:tree - 查找特定依赖:
mvn dependency:tree -Dincludes=groupId - 未使用依赖:
mvn dependency:analyze - 安全扫描:
mvn dependency-check:check - 更新版本:
mvn versions:use-latest-releases - 更新快照:
mvn versions:use-latest-snapshots
更新策略
保守(推荐生产环境):自由更新补丁版本;次要版本基本测试后更新;重大版本需要迁移计划。激进(用于活跃开发):mvn versions:use-latest-releases 更新全部到最新(谨慎使用),随后 mvn versions:commit 或 mvn versions:revert。选择性:mvn versions:use-latest-versions -Dincludes=org.junit.jupiter 更新指定依赖。
限制
资料未提供本技能对具体 Maven 版本、Java 版本的要求,也未说明与特定 CI 系统的集成方式。安全扫描依赖外部插件与漏洞数据库,扫描结果的时效性与准确性取决于数据源。本技能本身不替代人工对变更日志与迁移指南的审阅。若需了解收费、价格或平台支持信息,资料暂未提供。