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

将Gradle配置迁移至Gradle 8.2并解决编译弃用警告

问题

我有以下Gradle配置:

plugins {
    id 'org.springframework.boot' version '2.6.15'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

group = 'com.test'
version = '0.0.1'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
	ext {
    set('springCloudVersion', "2021.0.8")
}

repositories {
    mavenCentral()
    maven {
        url "http://192.168.1.111/repository"
        allowInsecureProtocol = true
    }
}

configurations {

    configureEach {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-web'
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    testImplementation 'org.junit.jupiter:junit-jupiter-api'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
    resolutionStrategy {
        cacheDynamicVersionsFor 0, "seconds"
        cacheChangingModulesFor 0, "seconds"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

编译时出现如下提示:

The Project.getConvention() method has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.2/userguide/upgrading_version_8.html#deprecated_access_to_conventions
The org.gradle.api.plugins.Convention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.2/userguide/upgrading_version_8.html#deprecated_access_to_conventions
The org.gradle.api.plugins.JavaPluginConvention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.2/userguide/upgrading_version_8.html#java_convention_deprecation

请问如何正确迁移该配置以适配Gradle 8.2?

迁移适配Gradle 8.2的配置方案

这些警告来自Spring Boot和Spring Cloud依赖管理插件对Gradle旧API(Convention相关)的调用,通过升级插件版本、优化配置写法即可解决:

核心修改点

  • 升级Spring Boot插件版本:将插件升级到支持Gradle 8.x的2.7.x稳定分支(示例用2.7.14)
  • 升级依赖管理插件版本:对应升级io.spring.dependency-management到1.1.5,适配新版Spring Boot
  • 规范Java版本配置:替换旧写法为Gradle 8推荐的工具链配置,避免环境不一致问题
  • 合并重复配置块:将两个configurations块合并,精简配置结构

修改后的完整配置

plugins {
    id 'org.springframework.boot' version '2.7.14'
    id 'io.spring.dependency-management' version '1.1.5'
    id 'java'
}

group = 'com.test'
version = '0.0.1'

java {
    // Gradle 8推荐的工具链配置,自动匹配对应JDK
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
    // 若需保留原写法,可替换为:
    // sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    // 合并exclude配置到同一块
    configureEach {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-web'
    }
}

ext {
    set('springCloudVersion', "2021.0.8")
}

repositories {
    mavenCentral()
    maven {
        url "http://192.168.1.111/repository"
        allowInsecureProtocol = true
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    testImplementation 'org.junit.jupiter:junit-jupiter-api'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
    resolutionStrategy {
        cacheDynamicVersionsFor 0, "seconds"
        cacheChangingModulesFor 0, "seconds"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

补充说明

  • 插件版本升级是消除Convention废弃警告的核心,新版插件已移除对旧Gradle API的依赖
  • Java工具链配置可让Gradle自动下载对应版本JDK(本地缺失时),是Gradle官方推荐的版本管理方式
  • 合并配置块仅为优化结构,不影响功能,但能让配置更整洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:40:21