From 8bb105dbcfcb95f28703f6d7b4bbc2e23d1c8878 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 8 Dec 2023 10:42:18 -0800 Subject: [PATCH 1/4] Remove `forUseAtConfigurationTime` from the `BlowdryerSetupPlugin`. --- src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java b/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java index 64ad106..094cfe8 100644 --- a/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java +++ b/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java @@ -32,7 +32,7 @@ public void apply(Settings settings) { if (badSemver(settings.getGradle().getGradleVersion()) < badSemver(MINIMUM_GRADLE)) { throw new GradleException("Blowdryer requires Gradle " + MINIMUM_GRADLE + " or newer, this was " + settings.getGradle().getGradleVersion()); } - Blowdryer.initTempDir(settings.getProviders().systemProperty("java.io.tmpdir").forUseAtConfigurationTime().get()); + Blowdryer.initTempDir(settings.getProviders().systemProperty("java.io.tmpdir").get()); settings.getExtensions().create(BlowdryerSetup.NAME, BlowdryerSetup.class, settings.getRootDir()); } From b46de36dca9b9b0a08d3ec7e8a2717b11bc3f4c6 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 8 Dec 2023 10:46:32 -0800 Subject: [PATCH 2/4] Update changelog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 164fd7b..79c4482 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Remove `Provider.forUseAtConfigurationTime method has been deprecated` warnings in recent versions of Gradle. ([#38](https://github.com/diffplug/blowdryer/pull/38)) ## [1.7.0] - 2023-01-28 ### Added From ccee5c59785ff20385f3199c096af2d48269fa23 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 8 Dec 2023 11:03:17 -0800 Subject: [PATCH 3/4] Add a test that fails because Gradle 8.5 has a warning. --- .../java/com/diffplug/blowdryer/BlowdryerPluginTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java b/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java index a9a9f28..d0e8331 100644 --- a/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java +++ b/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java @@ -20,6 +20,7 @@ import java.util.Locale; import java.util.stream.Collectors; import org.assertj.core.api.Assertions; +import org.gradle.testkit.runner.BuildResult; import org.junit.Assume; import org.junit.Test; @@ -377,4 +378,11 @@ public void tooOldError() throws IOException { Assertions.assertThat(gradleRunner().withGradleVersion("6.7").buildAndFail().getOutput().replace("\r\n", "\n")) .contains("Blowdryer requires Gradle 6.8 or newer, this was 6.7"); } + + @Test + public void deprecationError() throws IOException { + settingsGithub("test/2/a"); + BuildResult build = gradleRunner().withGradleVersion("8.5").withArguments("--warning-mode=fail").buildAndFail(); + Assertions.assertThat(build.getOutput()).contains("Provider.forUseAtConfigurationTime method has been deprecated"); + } } From 487b69bff94bc4c78fe85dc93b069c909d911ea2 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 8 Dec 2023 11:06:38 -0800 Subject: [PATCH 4/4] Call `forUseAtConfigurationTime` depending on the Gradle version. --- .../java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java | 8 +++++++- .../java/com/diffplug/blowdryer/BlowdryerPluginTest.java | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java b/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java index 094cfe8..fcc2ee1 100644 --- a/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java +++ b/src/main/java/com/diffplug/blowdryer/BlowdryerSetupPlugin.java @@ -20,10 +20,12 @@ import org.gradle.api.GradleException; import org.gradle.api.Plugin; import org.gradle.api.initialization.Settings; +import org.gradle.api.provider.Provider; /** Gradle settings plugin which configures the source URL and version. */ public class BlowdryerSetupPlugin implements Plugin { static final String MINIMUM_GRADLE = "6.8"; + static final String STOP_FORUSE_AT_CONFIGURATION_TIME = "7.4"; private static final Pattern BAD_SEMVER = Pattern.compile("(\\d+)\\.(\\d+)"); @@ -32,7 +34,11 @@ public void apply(Settings settings) { if (badSemver(settings.getGradle().getGradleVersion()) < badSemver(MINIMUM_GRADLE)) { throw new GradleException("Blowdryer requires Gradle " + MINIMUM_GRADLE + " or newer, this was " + settings.getGradle().getGradleVersion()); } - Blowdryer.initTempDir(settings.getProviders().systemProperty("java.io.tmpdir").get()); + Provider tmpDir = settings.getProviders().systemProperty("java.io.tmpdir"); + String tmpDirPath = badSemver(settings.getGradle().getGradleVersion()) >= badSemver(STOP_FORUSE_AT_CONFIGURATION_TIME) ? // depends on Gradle version + tmpDir.get() : // Gradle 7.4 and later + tmpDir.forUseAtConfigurationTime().get(); // before Gradle 7.4 + Blowdryer.initTempDir(tmpDirPath); settings.getExtensions().create(BlowdryerSetup.NAME, BlowdryerSetup.class, settings.getRootDir()); } diff --git a/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java b/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java index d0e8331..d85b61a 100644 --- a/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java +++ b/src/test/java/com/diffplug/blowdryer/BlowdryerPluginTest.java @@ -382,7 +382,7 @@ public void tooOldError() throws IOException { @Test public void deprecationError() throws IOException { settingsGithub("test/2/a"); - BuildResult build = gradleRunner().withGradleVersion("8.5").withArguments("--warning-mode=fail").buildAndFail(); - Assertions.assertThat(build.getOutput()).contains("Provider.forUseAtConfigurationTime method has been deprecated"); + BuildResult build = gradleRunner().withGradleVersion("8.5").withArguments("--warning-mode=fail").build(); + Assertions.assertThat(build.getOutput()).doesNotContain("Provider.forUseAtConfigurationTime method has been deprecated"); } }