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>
效果验证
针对你提到的示例场景:
- 在
pom.xml中添加postgresql依赖并设置scope=provided - 执行打包命令:
mvn clean compile install -DskipTests - 解压生成的可执行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
相关产品推荐
相关产品推荐

