diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/Closures.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/Closures.java index eabe42f51b8..7289aff5f19 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/Closures.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/Closures.java @@ -18,10 +18,20 @@ package org.springframework.boot.gradle.tasks.bundling; import groovy.lang.Closure; import org.gradle.api.Action; +import org.gradle.util.GradleVersion; /** - * Wrapper for the deprecated {@link org.gradle.util.ConfigureUtil} that allows - * deprecation warnings to be suppressed in a single, focused location. + * Wrapper for {@code ConfigureUtil} that handles the API and behavior differences in the + * versions of Gradle that we support. + *

+ * In Gradle 7.1 {@code org.gradle.util.ConfigureUtil} was deprecated and + * {@code org.gradle.util.internal.ConfigureUtil} was introduced as a replacement. In + * Gradle 7.6, the deprecation of {@code org.gradle.util.ConfigureUtil} was strengthened + * by reporting the use of deprecated API to the user. + *

+ * To accommodate the differences, we use {@code org.gradle.util.internal.ConfigureUtil} + * with Gradle 7.1 and later. With earlier versions, {@code org.gradle.util.ConfigureUtil} + * is used. This avoids users by nagged about deprecated API usage in our plugin. * * @author Andy Wilkinson */ @@ -33,7 +43,10 @@ final class Closures { @SuppressWarnings("deprecation") static Action asAction(Closure closure) { - return org.gradle.util.ConfigureUtil.configureUsing(closure); + if (GradleVersion.current().compareTo(GradleVersion.version("7.1")) < 0) { + return org.gradle.util.ConfigureUtil.configureUsing(closure); + } + return org.gradle.util.internal.ConfigureUtil.configureUsing(closure); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java index faf2640a3ce..d3bdeef1b64 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/src/main/java/org/springframework/boot/testsupport/gradle/testkit/GradleVersions.java @@ -34,16 +34,17 @@ public final class GradleVersions { public static List allCompatible() { if (isJava18()) { - return Arrays.asList("7.3.3", "7.4.2", GradleVersion.current().getVersion()); + return Arrays.asList("7.3.3", "7.4.2", GradleVersion.current().getVersion(), "7.6-rc-1"); } if (isJava17()) { - return Arrays.asList("7.2", "7.3.3", "7.4.2", GradleVersion.current().getVersion()); + return Arrays.asList("7.2", "7.3.3", "7.4.2", GradleVersion.current().getVersion(), "7.6-rc-1"); } if (isJava16()) { - return Arrays.asList("7.0.2", "7.1", "7.2", "7.3.3", "7.4.2", GradleVersion.current().getVersion()); + return Arrays.asList("7.0.2", "7.1", "7.2", "7.3.3", "7.4.2", GradleVersion.current().getVersion(), + "7.6-rc-1"); } return Arrays.asList("6.8.3", "6.9.3", "7.0.2", "7.1.1", "7.2", "7.3.3", "7.4.2", - GradleVersion.current().getVersion()); + GradleVersion.current().getVersion(), "7.6-rc-1"); } public static String minimumCompatible() {