You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测使用spring-boot-starter-*的Spring Boot项目中未使用的Maven依赖?

检测Spring Boot项目中可移除Maven依赖的实用方案

针对你遇到的mvn dependency:analyze对Spring Boot Starter支持不佳、depclean-maven-plugin不兼容Java 21的问题,以下是几个可行的替代方案:

1. 调整Maven Dependency Analyzer的配置

原生的dependency:analyze并非完全不可用,通过针对性配置可以过滤掉Spring Boot Starter的干扰:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.6.1</version>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>analyze-only</goal>
            </goals>
            <configuration>
                <!-- 忽略测试范围的依赖分析 -->
                <ignoreTestScope>true</ignoreTestScope>
                <!-- 忽略非编译范围的依赖(如runtime、provided) -->
                <ignoreNonCompile>true</ignoreNonCompile>
                <!-- 手动排除Spring Boot Starter这类聚合依赖的误报 -->
                <ignoredDependencies>
                    <ignoredDependency>org.springframework.boot:spring-boot-starter-web</ignoredDependency>
                    <ignoredDependency>org.springframework.boot:spring-boot-starter-data-jpa</ignoredDependency>
                    <!-- 按需添加其他Starter -->
                </ignoredDependencies>
            </configuration>
        </execution>
    </executions>
</plugin>

配置后运行mvn dependency:analyze-only,会更精准地识别真正未被代码引用的直接依赖。

2. 使用JDeps Maven插件做字节级分析

JDeps是JDK自带的依赖分析工具,能从字节码层面检测类的引用关系,对Spring Boot的反射场景也有一定适配性。可以通过jdeps-maven-plugin集成:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jdeps-maven-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>jdkinternals</goal>
                <goal>analyze</goal>
            </goals>
            <configuration>
                <!-- 输出未使用的依赖 -->
                <verbose>true</verbose>
                <!-- 排除Spring Boot自动配置类的干扰 -->
                <exclude>org.springframework.boot.autoconfigure.**</exclude>
            </configuration>
        </execution>
    </executions>
</plugin>

运行mvn jdeps:analyze后,会在控制台输出未被引用的依赖类,你可以据此排查对应的Maven依赖是否可移除。

3. 利用IDE的内置工具(推荐)

IntelliJ IDEA或Eclipse都有成熟的依赖分析功能,以IDEA为例:

  • 打开项目的pom.xml,切换到Dependency Analyzer标签页
  • 开启「Show unused dependencies」选项,IDEA会自动标记未被代码直接或间接引用的依赖
  • 对于Spring Boot Starter,IDEA能识别其传递依赖的使用情况,避免误判聚合依赖

这种方式操作直观,且能实时反馈依赖使用状态,适合日常开发中逐步清理依赖。

4. 使用maven-dependency-check-plugin的辅助排查(间接方式)

虽然该插件主要用于漏洞检测,但它生成的依赖树报告可以帮你梳理依赖关系:
运行mvn dependency-check:check,会生成HTML报告,其中包含完整的依赖层级,你可以结合代码引用情况,手动排查冗余依赖。


内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:38:10