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

从Maven迁移至Gradle后Spring Boot生成jar启动报错:属性绑定失败

问题根因与解决方案

你的报错核心是server.error.include-stacktrace属性绑定失败,结合Maven和Gradle配置的差异,一共存在4处错误,按优先级修改即可:


1. 版本不统一导致属性绑定失败

你在Gradle中对所有Spring Boot Starter用了+通配符拉取最新版本,但Maven中固定继承了spring-boot-starter-parent 2.4.3:

  • Spring Boot 2.3+版本后server.error.include-stacktrace从布尔值类型改为了IncludeAttribute枚举,可选值为always/on_trace_param/never
  • 如果你配置文件中写的是旧版的true/false,或者拉取的Spring Boot版本和配置逻辑不匹配,就会直接抛出绑定异常
  • 同时引入spring-boot-starter-web和spring-boot-starter-webflux时,跨版本依赖还会引发容器初始化冲突

修复方案:
在build.gradle头部引入Spring Boot官方插件,和Maven保持版本一致,所有官方Starter自动继承版本,无需手动指定:

plugins {
    id 'org.springframework.boot' version '2.4.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

之后把所有Spring Boot Starter、postgresql等官方托管依赖的版本号(包括+号)全部删掉,由插件统一管理版本。


2. Lombok依赖配置错误

Maven中Lombok的scope是provided,编译时生效,但你在Gradle中写成了runtimeOnly(仅运行时生效),会导致所有Lombok注解编译时不生效:
修复方案:替换原有lombok配置为:

compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'

3. 测试依赖打入生产包

你把spring-boot-starter-test放到了implementation依赖中,而Maven中仅为test scope,测试依赖中包含的测试配置类会污染生产环境上下文:
修复方案:删除implementation 'org.springframework.boot:spring-boot-starter-test:+'这一行,仅保留testImplementation声明的测试依赖即可。


4. 缺少Spring Boot打包插件

Maven中配置了spring-boot-maven-plugin用来生成可执行jar,Gradle中也需要对应配置才能生成正确的可执行jar结构:
修复方案:添加完第一步的插件后,在build.gradle中补充打包配置即可:

bootJar {
    mainClass.set('你的启动类全限定名,比如com.xxx.Application')
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:03