Spring Boot 3.2.x中spring-boot-configuration-processor被Maven排除问题咨询
Spring Boot 3.x中spring-boot-configuration-processor不再纳入Fat Jar的机制说明
核心原因:官方设定的依赖规则变更
Spring Boot 3.x对spring-boot-configuration-processor的依赖定位和打包逻辑做了明确调整,这是官方的有意设计,目的是精简应用运行时依赖。
具体排除机制
- 依赖角色定义:该处理器被明确标记为仅编译/IDE辅助工具,仅用于生成配置元数据供IDE提示使用,完全不参与应用运行时逻辑。因此Spring Boot 3.x的构建插件会默认将其从运行时依赖中排除,无论你是否在pom.xml中设置
scope=provided。 - spring-boot-maven-plugin自动过滤:插件内部维护了默认的排除列表,其中包含
org.springframework.boot:spring-boot-configuration-processor,在执行repackage目标构建fat jar时,会自动跳过该依赖的打包,即使手动指定scope也不会覆盖这个默认规则。 - 对比Spring Boot 2.x差异:在2.x版本中,插件对
providedscope依赖的过滤逻辑不够严格,导致该处理器可能被意外纳入fat jar,但这并非官方推荐的行为,3.x版本修正了这个问题,明确了这类工具依赖的处理方式。
官方文档相关说明
Spring Boot 3.x官方文档中明确提到:spring-boot-configuration-processor是可选的编译期依赖,仅用于开发阶段生成配置元数据,运行时不需要包含在应用包中。构建插件会自动处理这类依赖的排除,以减少最终fat jar的体积。
补充建议
- 不建议强制将该处理器纳入fat jar,这只会增加无用的依赖体积,没有任何运行时价值。
- 代码中对
org.springframework.boot.configurationprocessor.json包下类的引用,建议替换为Jackson、Gson等成熟的JSON处理库,这些类原本就是处理器内部的简易实现,并非官方推荐的运行时JSON解决方案。
内容的提问来源于stack exchange,提问作者Kona Laxman Deepak
相关产品推荐
相关产品推荐

