Spring 2.x升级至Spring Boot 3.2.0时出现Gradle构建依赖解析错误
问题
按OpenRewrite官方文档升级Spring Boot到3.2版本,添加对应插件与依赖后启动服务,遭遇Gradle构建失败。核心错误为无法解析org.springframework.boot:spring-boot-gradle-plugin:3.2.5,原因是项目使用Java 11,但该插件要求Java 17,同时存在org.gradle.plugin.api-version属性匹配问题(当前值为7.6.4)。
错误日志
FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'FormService'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.2.5. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.2.5 > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.2.5 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6.4' but: - Variant 'apiElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.5 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') - Variant 'javadocElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.5 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 11) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') - Variant 'mavenOptionalApiElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.2.5 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') - Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-plugin-maven-optional:3.2.5 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') - Variant 'runtimeElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.5 declares a runtime of a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') - Variant 'sourcesElements' capability org.springframework.boot:spring-boot-gradle-plugin:3.2.5 declares a runtime of a component, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 11) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '7.6.4') * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 282ms
解决方案
- 升级Java到17:Spring Boot 3.2及配套Gradle插件最低要求Java 17,这是符合官方规范的最优解。
- 降级Spring Boot版本:若暂时无法升级Java,可降级到Spring Boot 3.1.x系列(支持Java 11),同步调整Gradle插件版本。
- 升级Gradle版本:Spring Boot 3.2要求Gradle 8.0及以上,当前使用的7.6.4不兼容。若选择升级Java到17,需同时将Gradle升级到8.x版本。
内容的提问来源于stack exchange,提问作者Khawaja Farooq
相关产品推荐
相关产品推荐

