mcpField
M
maven-dependency-audit

maven-dependency-audit

github.com/decebals开发761285 次安装7 周前更新
代码仓库

关于 maven-dependency-audit

maven-dependency-audit 是面向 Maven 项目维护者的依赖审计技能,提供更新检查、依赖树分析和漏洞扫描流程,并指导整理优先级明确的审计报告。

主要功能

  1. 01检查依赖与插件更新
  2. 02分析依赖树及版本冲突
  3. 03识别未使用依赖
  4. 04扫描依赖安全漏洞
  5. 05生成优先级审计报告
  6. 06提供版本更新策略

适用场景

  1. 01发布前检查 Maven 项目依赖
  2. 02定期发现过时或未使用的依赖
  3. 03安全公告发布后扫描漏洞
  4. 04定位传递依赖来源并处理冲突

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/decebals/claude-code-java --skill maven-dependency-audit

安装后在 Claude Code 中输入/maven-dependency-audit确认已加载。

附带文件README.md

详细介绍

Maven 依赖审计技能

审计 Maven 依赖的更新、漏洞和冲突。

何时使用

  • 用户说“检查依赖”/“审计依赖”/“过时的依赖”
  • 发布前
  • 定期维护(建议每月一次)
  • 安全公告发布后

审计工作流

  1. 检查更新 - 查找过时的依赖
  2. 分析依赖树 - 查找冲突和重复项
  3. 安全扫描 - 检查漏洞
  4. 报告 - 提供摘要和按优先级排序的操作建议

1. 检查过时的依赖

命令
mvn versions:display-dependency-updates
输出分析
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   org.slf4j:slf4j-api ......................... 1.7.36 -> 2.0.9
[INFO]   com.fasterxml.jackson.core:jackson-databind . 2.14.0 -> 2.16.1
[INFO]   org.junit.jupiter:junit-jupiter ............. 5.9.0 -> 5.10.1
更新分类
类别标准操作
安全新版本修复了 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
查找冲突

查找:

[INFO] +- com.example:module-a:jar:1.0:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.36:compile
[INFO] +- com.example:module-b:jar:1.0:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:2.0.9:compile (omitted for conflict)

标记:

  • (omitted for conflict) - Maven 已解决版本冲突
  • (omitted for duplicate) - 版本相同,没有问题
  • 同一库存在多个版本 - 可能导致运行时问题
分析未使用的依赖
mvn dependency:analyze

输出:

[WARNING] Used undeclared dependencies found:
[WARNING]    org.slf4j:slf4j-api:jar:2.0.9:compile
[WARNING] Unused declared dependencies found:
[WARNING]    commons-io:commons-io:jar:2.11.0:compile

3. 安全漏洞扫描

选项 A:OWASP Dependency-Check(推荐)

添加到 pom.xml:

<plugin>
    <groupId>org.owasp</groupId>
    <artifactId>dependency-check-maven</artifactId>
    <version>9.0.7</version>
</plugin>

运行:

mvn dependency-check:check

输出:target/dependency-check-report.html 中的 HTML 报告

选项 B:Maven Dependency Plugin
mvn dependency:analyze-report
选项 C:GitHub Dependabot

如果使用 GitHub,请在仓库设置中启用 Dependabot 警报。

严重性级别
CVSS 分数严重性操作
9.0 - 10.0严重立即更新
7.0 - 8.9高几天内更新
4.0 - 6.9中几周内更新
0.1 - 3.9低方便时更新

4. 生成审计报告

输出格式
## Dependency Audit Report

**Project:** {project-name}
**Date:** {date}
**Total Dependencies:** {count}

### Security Issues

| Dependency | Current | CVE | Severity | Fixed In |
|------------|---------|-----|----------|----------|
| log4j-core | 2.14.0 | CVE-2021-44228 | Critical | 2.17.1 |

### Outdated Dependencies

#### Major Updates (Review Required)
| Dependency | Current | Latest | Notes |
|------------|---------|--------|-------|
| slf4j-api | 1.7.36 | 2.0.9 | API changes, see migration guide |

#### Minor/Patch Updates (Safe)
| Dependency | Current | Latest |
|------------|---------|--------|
| junit-jupiter | 5.9.0 | 5.10.1 |
| jackson-databind | 2.14.0 | 2.16.1 |

### Conflicts Detected
- slf4j-api: 1.7.36 vs 2.0.9 (resolved to 2.0.9)

### Unused Dependencies
- commons-io:commons-io:2.11.0 (consider removing)

### Recommendations
1. **Immediate:** Update log4j-core to fix CVE-2021-44228
2. **This sprint:** Update minor/patch versions
3. **Plan:** Evaluate slf4j 2.x migration

常见场景

场景:发布前检查
# Quick check
mvn versions:display-dependency-updates -q

# Full audit
mvn versions:display-dependency-updates && \
mvn dependency:analyze && \
mvn dependency-check:check
场景:查明引入依赖的原因
mvn dependency:tree -Dincludes=commons-logging
场景:强制指定版本(解决冲突)
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.9</version>
        </dependency>
    </dependencies>
</dependencyManagement>
场景:排除传递依赖
<dependency>
    <groupId>com.example</groupId>
    <artifactId>some-library</artifactId>
    <version>1.0</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Token 优化

  • 使用 -q(安静)标志减少输出
  • 查找特定依赖时,使用 -Dincludes=groupId:artifactId 进行筛选
  • 分别运行命令并总结结果
  • 不要粘贴完整依赖树,而应总结冲突

快速命令参考

任务命令
过时的依赖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

更新策略

保守策略(生产环境推荐)
  1. 可自由更新补丁版本
  2. 更新次版本并进行基本测试
  3. 主版本需要迁移计划
激进策略(适用于积极开发)
# Update all to latest (use with caution!)
mvn versions:use-latest-releases
mvn versions:commit  # or versions:revert
选择性策略
# Update specific dependency
mvn versions:use-latest-versions -Dincludes=org.junit.jupiter

评论

支持 Markdown