Polish "Vary Kotlin stdlib artifact ID depending on the version of Kotlin"

See gh-1386
This commit is contained in:
Andy Wilkinson
2023-02-27 13:03:47 +00:00
parent 59e50daf54
commit ff8b7237ce
2 changed files with 18 additions and 16 deletions

View File

@@ -20,6 +20,8 @@ import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.spring.build.BuildCustomizer;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.generator.version.VersionRange;
/**
* {@link BuildCustomizer} for Kotlin projects build with Maven when Kotlin is supported
@@ -32,6 +34,8 @@ import io.spring.initializr.generator.spring.build.BuildCustomizer;
*/
class KotlinMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
private static final VersionRange KOTLIN_ONE_EIGHT_OR_LATER = new VersionRange(Version.parse("1.8.0"));
private final KotlinProjectSettings settings;
KotlinMavenBuildCustomizer(KotlinProjectSettings kotlinProjectSettings) {
@@ -52,10 +56,8 @@ class KotlinMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
});
kotlinMavenPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}");
});
String[] version = this.settings.getVersion().split("\\.");
String artifactId = (Integer.parseInt(version[0]) >= 2
|| Integer.parseInt(version[0]) == 1 && Integer.parseInt(version[1]) >= 8) ? "kotlin-stdlib"
: "kotlin-stdlib-jdk8";
String artifactId = KotlinMavenBuildCustomizer.KOTLIN_ONE_EIGHT_OR_LATER
.match(Version.parse(this.settings.getVersion())) ? "kotlin-stdlib" : "kotlin-stdlib-jdk8";
build.dependencies().add("kotlin-stdlib",
Dependency.withCoordinates("org.jetbrains.kotlin", artifactId).scope(DependencyScope.COMPILE));

View File

@@ -86,7 +86,7 @@ class KotlinMavenBuildCustomizerTests {
@Test
void kotlinMavenPluginWithSeveralArgs() {
MavenBuild build = new MavenBuild();
new KotlinMavenBuildCustomizer(new TestKotlinProjectSettings()).customize(build);
new KotlinMavenBuildCustomizer(new KotlinOneEightProjectSettings()).customize(build);
assertThat(build.plugins().values()).singleElement().satisfies((kotlinPlugin) -> {
Configuration configuration = kotlinPlugin.getConfiguration();
Setting args = configuration.getSettings().get(0);
@@ -100,9 +100,9 @@ class KotlinMavenBuildCustomizerTests {
}
@Test
void kotlinMavenKotlinStdlibIsConfigured() {
void kotlinMavenKotlinStdlibIsConfiguredWithKotlinOneEight() {
MavenBuild build = new MavenBuild();
new KotlinMavenBuildCustomizer(new TestKotlinProjectSettings()).customize(build);
new KotlinMavenBuildCustomizer(new KotlinOneEightProjectSettings()).customize(build);
assertThat(build.dependencies().ids()).containsOnly("kotlin-stdlib");
io.spring.initializr.generator.buildsystem.Dependency kotlinStdlib = build.dependencies().get("kotlin-stdlib");
assertThat(kotlinStdlib.getGroupId()).isEqualTo("org.jetbrains.kotlin");
@@ -112,21 +112,21 @@ class KotlinMavenBuildCustomizerTests {
}
@Test
void kotlinMavenKotlinStdlibIsConfiguredWithOldKotlin() {
void kotlinMavenKotlinStdlibJdk8IsConfiguredWithKotlinOneSeven() {
MavenBuild build = new MavenBuild();
new KotlinMavenBuildCustomizer(new TestKotlinProjectSettingsOldKotlin()).customize(build);
new KotlinMavenBuildCustomizer(new KotlinOneSevenProjectSettings()).customize(build);
assertThat(build.dependencies().ids()).containsOnly("kotlin-stdlib");
io.spring.initializr.generator.buildsystem.Dependency kotlinStdlib = build.dependencies().get("kotlin-stdlib");
assertThat(kotlinStdlib.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(kotlinStdlib.getArtifactId()).isEqualTo("kotlin-stdlib-jvm8");
assertThat(kotlinStdlib.getArtifactId()).isEqualTo("kotlin-stdlib-jdk8");
assertThat(kotlinStdlib.getVersion()).isNull();
assertThat(kotlinStdlib.getScope()).isEqualTo(DependencyScope.COMPILE);
}
private static class TestKotlinProjectSettings extends SimpleKotlinProjectSettings {
private static class KotlinOneEightProjectSettings extends SimpleKotlinProjectSettings {
TestKotlinProjectSettings() {
super("1.8.10");
KotlinOneEightProjectSettings() {
super("1.8.0");
}
@Override
@@ -136,10 +136,10 @@ class KotlinMavenBuildCustomizerTests {
}
private static class TestKotlinProjectSettingsOldKotlin extends SimpleKotlinProjectSettings {
private static class KotlinOneSevenProjectSettings extends SimpleKotlinProjectSettings {
TestKotlinProjectSettingsOldKotlin() {
super("1.3.20");
KotlinOneSevenProjectSettings() {
super("1.7.22");
}
@Override