From 84e16d55ea5c05c6acc51c912b5da1464f6d34f9 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 31 Mar 2020 18:51:45 +0100 Subject: [PATCH] Raise the minimum supported version of Gradle 6 to 6.3 Closes gh-20532 --- .../src/docs/asciidoc/build-tool-plugins.adoc | 3 ++- .../src/docs/asciidoc/getting-started.adoc | 6 ++--- .../src/docs/asciidoc/index.adoc | 3 ++- .../boot/gradle/plugin/SpringBootPlugin.java | 9 +++++--- .../docs/RunningDocumentationTests.java | 6 ++--- .../junit/GradleCompatibilityExtension.java | 9 ++++---- .../SpringBootPluginIntegrationTests.java | 23 +++++++++++++++---- 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/build-tool-plugins.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/build-tool-plugins.adoc index 950901e1370..9eb07aa1e28 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/build-tool-plugins.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/build-tool-plugins.adoc @@ -160,7 +160,8 @@ Advanced configuration options and examples are available in the {spring-boot-ma [[build-tool-plugins-gradle-plugin]] == Spring Boot Gradle Plugin The Spring Boot Gradle Plugin provides Spring Boot support in Gradle, letting you package executable jar or war archives, run Spring Boot applications, and use the dependency management provided by `spring-boot-dependencies`. -It requires Gradle 6.x (5.6 is also supported but this support is deprecated and will be removed in a future release). +It requires Gradle 6 (6.3 or later). +Gradle 5.6.x is also supported but this support is deprecated and will be removed in a future release. Please refer to the plugin's documentation to learn more: * Reference ({spring-boot-gradle-plugin-docs}[HTML] and {spring-boot-gradle-plugin-pdfdocs}[PDF]) diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/getting-started.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/getting-started.adoc index f0367bb0ce2..fb3c75332c9 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/getting-started.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/getting-started.adoc @@ -41,7 +41,7 @@ Explicit build support is provided for the following build tools: | 3.3+ | Gradle -| 6.x (5.6 is also supported but in a deprecated form) +| 6 (6.3 or later). 5.6.x is also supported but in a deprecated form |=== @@ -195,8 +195,8 @@ In those cases, see <> [[getting-started-gradle-installation]] ==== Gradle Installation -Spring Boot is compatible with 6.x. -5.6 is also supported but this support is deprecated and will be removed in a future release. +Spring Boot is compatible with Gradle 6 (6.3 or later). +Gradle 5.6.x is also supported but this support is deprecated and will be removed in a future release. If you do not already have Gradle installed, you can follow the instructions at https://gradle.org. Spring Boot dependencies can be declared by using the `org.springframework.boot` `group`. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/index.adoc b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/index.adoc index 0fca37925ff..5d144907f42 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/index.adoc +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/index.adoc @@ -41,7 +41,8 @@ Andy Wilkinson, Scott Frederick The Spring Boot Gradle Plugin provides Spring Boot support in https://gradle.org[Gradle]. It allows you to package executable jar or war archives, run Spring Boot applications, and use the dependency management provided by `spring-boot-dependencies`. -Spring Boot's Gradle plugin requires Gradle 6.x (5.6 is also supported but this support is deprecated and will be removed in a future release). +Spring Boot's Gradle plugin requires Gradle 6 (6.3 or later). +Gradle 5.6 is also supported but this support is deprecated and will be removed in a future release. In addition to this user guide, {api-documentation}[API documentation] is also available. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java index 167ec72d684..2ea615bbf81 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java @@ -86,9 +86,12 @@ public class SpringBootPlugin implements Plugin { } private void verifyGradleVersion() { - if (GradleVersion.current().compareTo(GradleVersion.version("5.6")) < 0) { - throw new GradleException("Spring Boot plugin requires Gradle 5.6 or later. The current version is " - + GradleVersion.current()); + GradleVersion currentVersion = GradleVersion.current(); + if (currentVersion.compareTo(GradleVersion.version("5.6")) < 0 + || (currentVersion.getBaseVersion().compareTo(GradleVersion.version("6.0")) >= 0 + && currentVersion.compareTo(GradleVersion.version("6.3")) < 0)) { + throw new GradleException("Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). " + + "The current version is " + currentVersion); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/RunningDocumentationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/RunningDocumentationTests.java index 24c5f2b0f7e..1ac990f8b60 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/RunningDocumentationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/RunningDocumentationTests.java @@ -43,10 +43,8 @@ class RunningDocumentationTests { @TestTemplate @DisabledForJreRange(min = JRE.JAVA_13) void bootRunMain() throws IOException { - // Testing of convention mappings is flakey between 5.2 and 6.0 inclusive - // https://github.com/gradle/gradle/issues/11323 - assertThat(this.gradleBuild.gradleVersion("6.1-rc-2").script("src/docs/gradle/running/boot-run-main") - .build("configuredMainClass").getOutput()).contains("com.example.ExampleApplication"); + assertThat(this.gradleBuild.script("src/docs/gradle/running/boot-run-main").build("configuredMainClass") + .getOutput()).contains("com.example.ExampleApplication"); } @TestTemplate diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java index bf7f115b670..931728d9a2f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java @@ -42,14 +42,13 @@ public final class GradleCompatibilityExtension implements TestTemplateInvocatio private static final List GRADLE_VERSIONS; static { - if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_14)) { + JavaVersion javaVersion = JavaVersion.current(); + if (javaVersion.isCompatibleWith(JavaVersion.VERSION_14) + || javaVersion.isCompatibleWith(JavaVersion.VERSION_13)) { GRADLE_VERSIONS = Arrays.asList("default"); } - else if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_13)) { - GRADLE_VERSIONS = Arrays.asList("6.0.1", "6.1.1", "6.2.2", "default"); - } else { - GRADLE_VERSIONS = Arrays.asList("5.6.4", "6.0.1", "6.1.1", "6.2.2", "default"); + GRADLE_VERSIONS = Arrays.asList("5.6.4", "default"); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java index 4954d98e289..f84cec7a9a0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java @@ -42,24 +42,39 @@ class SpringBootPluginIntegrationTests { @DisabledForJreRange(min = JRE.JAVA_14) @Test - void failFastWithVersionOfGradleLowerThanRequired() { + void failFastWithVersionOfGradle5LowerThanRequired() { BuildResult result = this.gradleBuild.gradleVersion("5.5.1").buildAndFail(); assertThat(result.getOutput()) - .contains("Spring Boot plugin requires Gradle 5.6 or later. The current version is Gradle 5.5.1"); + .contains("Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). " + + "The current version is Gradle 5.5.1"); + } + + @DisabledForJreRange(min = JRE.JAVA_14) + @Test + void failFastWithVersionOfGradle6LowerThanRequired() { + BuildResult result = this.gradleBuild.gradleVersion("6.2.2").buildAndFail(); + assertThat(result.getOutput()) + .contains("Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). " + + "The current version is Gradle 6.2.2"); } @DisabledForJreRange(min = JRE.JAVA_13) @Test - void succeedWithVersionOfGradleHigherThanRequired() { + void succeedWithVersionOfGradle5HigherThanRequired() { this.gradleBuild.gradleVersion("5.6.1").build(); } @DisabledForJreRange(min = JRE.JAVA_13) @Test - void succeedWithVersionOfGradleMatchingWhatIsRequired() { + void succeedWithVersionOfGradle6MatchingWhatIsRequired() { this.gradleBuild.gradleVersion("5.6").build(); } + @Test + void succeedWithVersionOfGradle6MatchingWithIsRequired() { + this.gradleBuild.gradleVersion("6.3").build(); + } + @Test void unresolvedDependenciesAreAnalyzedWhenDependencyResolutionFails() throws IOException { createMinimalMainSource();