From 4f85c00e13fdd727b25952e1552dc6dd16f6510a Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 24 May 2023 13:09:45 +0200 Subject: [PATCH] Polish "Make optional/developmentOnly more generic" See gh-1406 --- ...ntOnlyDependencyGradleBuildCustomizer.java | 2 +- ...ptionalDependencyMavenBuildCustomizer.java | 2 +- .../DevToolsGradleBuildCustomizer.java | 35 +++---------------- .../DevToolsMavenBuildCustomizer.java | 23 +++--------- .../spring/dependency/package-info.java | 20 ----------- ...yDependencyGradleBuildCustomizerTests.java | 2 +- ...alDependencyMavenBuildCustomizerTests.java | 2 +- .../DevToolsGradleBuildCustomizerTests.java | 33 +++++------------ .../DevToolsMavenBuildCustomizerTests.java | 2 ++ 9 files changed, 23 insertions(+), 98 deletions(-) rename initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/{dependency => build/gradle}/DevelopmentOnlyDependencyGradleBuildCustomizer.java (96%) rename initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/{dependency => build/maven}/OptionalDependencyMavenBuildCustomizer.java (96%) delete mode 100644 initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/package-info.java rename initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/{dependency => build/gradle}/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java (98%) rename initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/{dependency => build/maven}/OptionalDependencyMavenBuildCustomizerTests.java (98%) diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizer.java similarity index 96% rename from initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizer.java rename to initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizer.java index f5490fdc..cfb3f3dd 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.initializr.generator.spring.dependency; +package io.spring.initializr.generator.spring.build.gradle; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizer.java similarity index 96% rename from initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizer.java rename to initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizer.java index 5ff0220f..4b03713f 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.initializr.generator.spring.dependency; +package io.spring.initializr.generator.spring.build.maven; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizer.java index 6deadb39..cf56cf56 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizer.java @@ -16,14 +16,9 @@ package io.spring.initializr.generator.spring.dependency.devtools; -import io.spring.initializr.generator.buildsystem.Dependency; -import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; -import io.spring.initializr.generator.buildsystem.gradle.GradleDependency; import io.spring.initializr.generator.spring.build.BuildCustomizer; -import io.spring.initializr.generator.spring.dependency.DevelopmentOnlyDependencyGradleBuildCustomizer; +import io.spring.initializr.generator.spring.build.gradle.DevelopmentOnlyDependencyGradleBuildCustomizer; import io.spring.initializr.generator.version.Version; -import io.spring.initializr.generator.version.VersionParser; -import io.spring.initializr.generator.version.VersionRange; /** * Gradle {@link BuildCustomizer} that creates a dedicated "developmentOnly" configuration @@ -32,14 +27,8 @@ import io.spring.initializr.generator.version.VersionRange; * @author Stephane Nicoll * @deprecated in favor of {@link DevelopmentOnlyDependencyGradleBuildCustomizer} */ -@Deprecated -public class DevToolsGradleBuildCustomizer implements BuildCustomizer { - - private static final VersionRange SPRING_BOOT_2_3_0_RC1_OR_LATER = VersionParser.DEFAULT.parseRange("2.3.0.RC1"); - - private final Version platformVersion; - - private final String devtoolsDependencyId; +@Deprecated(since = "0.20.0", forRemoval = true) +public class DevToolsGradleBuildCustomizer extends DevelopmentOnlyDependencyGradleBuildCustomizer { /** * Create a new instance with the requested {@link Version platform version} and the @@ -48,23 +37,7 @@ public class DevToolsGradleBuildCustomizer implements BuildCustomizer runtimeClasspath.extendsFrom("developmentOnly")); - } - build.dependencies() - .add(this.devtoolsDependencyId, GradleDependency.from(devtools).configuration("developmentOnly")); + super(devtoolsDependencyId); } } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizer.java index 3c8a183b..5661417a 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,8 @@ package io.spring.initializr.generator.spring.dependency.devtools; -import io.spring.initializr.generator.buildsystem.Dependency; -import io.spring.initializr.generator.buildsystem.maven.MavenBuild; -import io.spring.initializr.generator.buildsystem.maven.MavenDependency; import io.spring.initializr.generator.spring.build.BuildCustomizer; -import io.spring.initializr.generator.spring.dependency.OptionalDependencyMavenBuildCustomizer; +import io.spring.initializr.generator.spring.build.maven.OptionalDependencyMavenBuildCustomizer; /** * Maven {@link BuildCustomizer} that sets the "optional" flag when devtools is selected. @@ -28,25 +25,15 @@ import io.spring.initializr.generator.spring.dependency.OptionalDependencyMavenB * @author Stephane Nicoll * @deprecated in favor of {@link OptionalDependencyMavenBuildCustomizer} */ -@Deprecated -public class DevToolsMavenBuildCustomizer implements BuildCustomizer { - - private final String devtoolsDependencyId; +@Deprecated(since = "0.20.0", forRemoval = true) +public class DevToolsMavenBuildCustomizer extends OptionalDependencyMavenBuildCustomizer { /** * Create a new instance with the identifier for the devtools dependency. * @param devtoolsDependencyId the id of the devtools dependency */ public DevToolsMavenBuildCustomizer(String devtoolsDependencyId) { - this.devtoolsDependencyId = devtoolsDependencyId; - } - - @Override - public void customize(MavenBuild build) { - Dependency devtools = build.dependencies().get(this.devtoolsDependencyId); - if (devtools != null) { - build.dependencies().add("devtools", MavenDependency.from(devtools).optional(true)); - } + super(devtoolsDependencyId); } } diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/package-info.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/package-info.java deleted file mode 100644 index 846dfac9..00000000 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/dependency/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Customizations for dependencies. - */ -package io.spring.initializr.generator.spring.dependency; diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java similarity index 98% rename from initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java rename to initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java index 8111004e..19d4ef00 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/DevelopmentOnlyDependencyGradleBuildCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.initializr.generator.spring.dependency; +package io.spring.initializr.generator.spring.build.gradle; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizerTests.java similarity index 98% rename from initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizerTests.java rename to initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizerTests.java index 8066b051..240470c8 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/OptionalDependencyMavenBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/OptionalDependencyMavenBuildCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.initializr.generator.spring.dependency; +package io.spring.initializr.generator.spring.build.maven; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizerTests.java index f9443407..7044e45e 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsGradleBuildCustomizerTests.java @@ -23,13 +23,14 @@ import io.spring.initializr.generator.version.Version; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; /** * Tests for {@link DevToolsGradleBuildCustomizer}. * * @author Stephane Nicoll */ +@Deprecated +@SuppressWarnings("removal") class DevToolsGradleBuildCustomizerTests { private static final Dependency DEVTOOLS_DEPENDENCY = Dependency @@ -37,39 +38,21 @@ class DevToolsGradleBuildCustomizerTests { .build(); @Test - void gradleWithDevtoolsAndSpringBootPriorTo23RC1CreatesDevelopmentOnlyConfiguration() { + void gradleWithDevtoolsFlagDependencyAsDevelopmentOnly() { GradleBuild build = new GradleBuild(); build.dependencies().add("devtools", DEVTOOLS_DEPENDENCY); - new DevToolsGradleBuildCustomizer(Version.parse("2.3.0.M4"), "devtools").customize(build); - assertThat(build.configurations().names()).containsOnly("developmentOnly"); - assertThat(build.configurations().customizations()).singleElement().satisfies((configuration) -> { - assertThat(configuration.getName()).isEqualTo("runtimeClasspath"); - assertThat(configuration.getExtendsFrom()).containsOnly("developmentOnly"); - }); + new DevToolsGradleBuildCustomizer(Version.parse("3.0.0"), "devtools").customize(build); Dependency devtools = build.dependencies().get("devtools"); assertThat(devtools).isInstanceOf(GradleDependency.class); assertThat(((GradleDependency) devtools).getConfiguration()).isEqualTo("developmentOnly"); } @Test - void gradleWithDevtoolsAndSpringBoot23RC1OrLaterDoesNotCreateDevelopmentOnlyConfiguration() { + void gradleWithoutDevtoolsDoesNotModifyDependencies() { GradleBuild build = new GradleBuild(); - build.dependencies().add("devtools", DEVTOOLS_DEPENDENCY); - build.dependencies().add("devtools", DEVTOOLS_DEPENDENCY); - new DevToolsGradleBuildCustomizer(Version.parse("2.3.0.RC1"), "devtools").customize(build); - assertThat(build.configurations().names()).isEmpty(); - Dependency devtools = build.dependencies().get("devtools"); - assertThat(devtools).isInstanceOf(GradleDependency.class); - assertThat(((GradleDependency) devtools).getConfiguration()).isEqualTo("developmentOnly"); - } - - @Test - void gradleWithoutDevtoolsAndSpringBootPriorTo23RC1DoesNotCreateDevelopmentOnlyConfiguration() { - GradleBuild build = new GradleBuild(); - build.dependencies().add("web", mock(Dependency.class)); - new DevToolsGradleBuildCustomizer(Version.parse("2.3.0.M4"), "devtools").customize(build); - assertThat(build.configurations().names()).isEmpty(); - assertThat(build.dependencies().ids()).containsOnly("web"); + build.dependencies().add("ignored", DEVTOOLS_DEPENDENCY); + new DevToolsGradleBuildCustomizer(Version.parse("3.0.0"), "devtools").customize(build); + assertThat(build.dependencies().get("devtools")).isNull(); } } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizerTests.java index 64300f67..bec385c8 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/dependency/devtools/DevToolsMavenBuildCustomizerTests.java @@ -29,6 +29,8 @@ import static org.mockito.Mockito.mock; * * @author Stephane Nicoll */ +@Deprecated +@SuppressWarnings("removal") class DevToolsMavenBuildCustomizerTests { private static final Dependency DEVTOOLS_DEPENDENCY = Dependency