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

Spring Boot Maven Plugin优化依赖管理:排除Provided及其传递依赖

解决方案:排除Spring Boot打包中的Provided Scope依赖及传递依赖

直接通过配置spring-boot-maven-plugin的<excludeScope>参数,就能一次性排除所有provided scope的依赖及其传递依赖,无需逐个指定或按groupId过滤,完美解决你遇到的问题。

具体配置步骤

在项目的pom.xml中找到spring-boot-maven-plugin的配置块,添加<excludeScope>provided</excludeScope>:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 排除所有provided scope的依赖及其传递依赖 -->
                <excludeScope>provided</excludeScope>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

效果验证

针对你提到的示例场景:

  1. 在pom.xml中添加postgresql依赖并设置scope=provided
  2. 执行打包命令:mvn clean compile install -DskipTests
  3. 解压生成的可执行JAR,会发现postgresql及其传递依赖checker-qual都已被排除,不会出现在JAR的依赖目录中。

方案优势

  • 无需手动逐个排除依赖,操作高效
  • 基于依赖的scope精准过滤,不会误排除未来新增的同groupId依赖(只要新增依赖的scope不是provided就不会被排除)
  • 完全符合Maven依赖scope的语义,逻辑清晰

特殊场景处理

如果有个别provided scope的依赖确实需要打包进JAR,可以通过<includes>参数单独指定:

<configuration>
    <excludeScope>provided</excludeScope>
    <includes>
        <include>com.example:special-provided-dependency</include>
    </includes>
</configuration>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:23:15