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

升级至JDK 17与Gradle 7.4.2后bootJar任务构建失败求助

解决Gradle 7.4.2 + Spring Boot 2.1.1构建时bootJar任务的注解缺失错误

问题根源

你遇到的bootInf属性缺失注解的错误,本质是Spring Boot 2.1.x版本的Gradle插件与Gradle 7.x不兼容。Gradle 7.x开始严格检查任务属性的输入/输出注解,而旧版Spring Boot插件的BootJar类中bootInf属性未添加必要注解,触发了这个校验错误。同时,Spring Boot 2.1.x本身不支持JDK17,这也会带来潜在的兼容性问题。

解决方案

必须升级Spring Boot版本到支持Gradle 7.x和JDK17的分支,推荐使用Spring Boot 2.7.x系列(这是支持JDK17的最低稳定分支,且完全兼容Gradle 7.4.2)。以下是具体修改步骤:

  1. 升级Spring Boot Gradle插件版本
    修改buildscript中的插件依赖版本,同时移除已停止维护的jcenter()仓库:

    buildscript {
      repositories {
        mavenLocal()
        maven { url "https://plugins.gradle.org/m2/" }
        mavenCentral()
      }
      dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.7.17") // 替换为2.7.x最新稳定版
        classpath("net.researchgate:gradle-release:3.0.2") // 升级gradle-release兼容Gradle7
        classpath("com.bmuschko:gradle-docker-plugin:7.3.0") // 升级docker插件兼容版本
        classpath("gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.20.0") // 升级swagger插件
      }
    }
    
  2. 同步升级Spring Boot依赖版本
    统一dependencies中的Spring Boot starter依赖版本,同时移除多余的插件依赖:

    dependencies {
      // 移除仅需在buildscript中声明的spring-boot-gradle-plugin依赖
      // implementation("org.springframework.boot:spring-boot-gradle-plugin:2.1.1.RELEASE")
    
      implementation("org.springframework.boot:spring-boot-starter-web:2.7.17")
      implementation("org.springframework.boot:spring-boot-starter-json:2.7.17")
      implementation("org.springframework.boot:spring-boot-starter-actuator:2.7.17")
    
      testImplementation("org.springframework.boot:spring-boot-starter-test:2.7.17")
      // 其他依赖保持不变,若有版本冲突需同步调整
    }
    
  3. 调整Spring Boot配置
    Spring Boot 2.7.x中mainClassName已被mainClass替代,修改springBoot块:

    springBoot {
      mainClass.set("com.somethingSomething.ServiceApplication")
      buildInfo()
    }
    
  4. 清理过时仓库配置
    从项目根repositories中移除jcenter(),改用mavenCentral()即可满足依赖拉取需求。

额外说明

  • 关于compileJava的unchecked警告:这是代码中使用未指定泛型的集合等操作导致的,可添加-Xlint:unchecked参数查看具体位置,但不影响构建,若要修复需调整对应代码。
  • 插件兼容性:确保所有Gradle插件版本都适配Gradle 7.4.2,上述示例中已给出兼容版本参考。

完成以上修改后,重新执行./gradlew build即可解决bootJar任务的错误,同时确保项目在JDK17环境下正常运行。

内容的提问来源于stack exchange,提问作者Muhammed Abid Rahman Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:52:15