From 8708a21143cf345726f1f22ae5f991a3fccfa74e Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 22 Sep 2023 09:44:12 +0200 Subject: [PATCH] Configure Gradle toolchain auto-provisioning This commit configures the Foojay resolver plugin in the Gradle build in order to auto-provision a required JDK distribution if it's not present already on the host. Currently the Spring Framework build requires both a JDK 17 and a JDK 21 distribution to build artifacts. Closes gh-30474 --- .../java/org/springframework/build/JavaConventions.java | 8 ++++++-- settings.gradle | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/build/JavaConventions.java index 9feb877367..08050fb6da 100644 --- a/buildSrc/src/main/java/org/springframework/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/build/JavaConventions.java @@ -27,6 +27,8 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.jvm.toolchain.JavaLanguageVersion; +import org.gradle.jvm.toolchain.JavaToolchainSpec; +import org.gradle.jvm.toolchain.JvmVendorSpec; /** * {@link Plugin} that applies conventions for compiling Java sources in Spring Framework. @@ -70,8 +72,10 @@ public class JavaConventions { * @param project the current project */ private void applyJavaCompileConventions(Project project) { - project.getExtensions().getByType(JavaPluginExtension.class) - .getToolchain().getLanguageVersion().set(JavaLanguageVersion.of(17)); + project.getExtensions().getByType(JavaPluginExtension.class).toolchain(toolchain -> { + toolchain.getVendor().set(JvmVendorSpec.BELLSOFT); + toolchain.getLanguageVersion().set(JavaLanguageVersion.of(17)); + }); project.getTasks().withType(JavaCompile.class) .matching(compileTask -> compileTask.getName().equals(JavaPlugin.COMPILE_JAVA_TASK_NAME)) .forEach(compileTask -> { diff --git a/settings.gradle b/settings.gradle index a9bec49104..faf5f6446e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,6 +1,7 @@ plugins { id "com.gradle.enterprise" version "3.14" id "io.spring.ge.conventions" version "0.0.13" + id "org.gradle.toolchains.foojay-resolver-convention" version "0.7.0" } include "spring-aop"