mirror of
https://gitee.com/dcren/initializr.git
synced 2025-04-05 17:38:06 +08:00
Polish "Make optional/developmentOnly more generic"
See gh-1406
This commit is contained in:
parent
be3eaf480d
commit
4f85c00e13
@ -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;
|
@ -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;
|
@ -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<GradleBuild> {
|
||||
|
||||
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<GradleBuil
|
||||
* @param devtoolsDependencyId the id of the devtools dependency
|
||||
*/
|
||||
public DevToolsGradleBuildCustomizer(Version platformVersion, String devtoolsDependencyId) {
|
||||
this.platformVersion = platformVersion;
|
||||
this.devtoolsDependencyId = devtoolsDependencyId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void customize(GradleBuild build) {
|
||||
Dependency devtools = build.dependencies().get(this.devtoolsDependencyId);
|
||||
if (devtools == null) {
|
||||
return;
|
||||
}
|
||||
if (!SPRING_BOOT_2_3_0_RC1_OR_LATER.match(this.platformVersion)) {
|
||||
build.configurations().add("developmentOnly");
|
||||
build.configurations()
|
||||
.customize("runtimeClasspath", (runtimeClasspath) -> runtimeClasspath.extendsFrom("developmentOnly"));
|
||||
}
|
||||
build.dependencies()
|
||||
.add(this.devtoolsDependencyId, GradleDependency.from(devtools).configuration("developmentOnly"));
|
||||
super(devtoolsDependencyId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<MavenBuild> {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user