diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizer.java index 62d35a25db..9804201168 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizer.java @@ -18,6 +18,7 @@ import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.spring.build.BuildCustomizer; +import io.spring.initializr.generator.version.VersionReference; /** * {@link BuildCustomizer} for Kotlin projects build with Maven. @@ -29,7 +30,7 @@ class GroovyMavenBuildCustomizer implements BuildCustomizer { @Override public void customize(MavenBuild build) { build.plugins().add("org.codehaus.gmavenplus", "gmavenplus-plugin", (groovyMavenPlugin) -> { - groovyMavenPlugin.version("1.11.0"); + groovyMavenPlugin.version(VersionReference.ofValue("1.11.0")); groovyMavenPlugin.execution(null, (execution) -> execution.goal("addSources").goal("addTestSources").goal("generateStubs") .goal("compile").goal("generateTestStubs").goal("compileTests").goal("removeStubs") diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizer.java index 60c0c348cc..73bd7cbdd3 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizer.java @@ -18,6 +18,7 @@ import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.spring.build.BuildCustomizer; +import io.spring.initializr.generator.version.VersionReference; /** * {@link BuildCustomizer} for Kotlin projects build with Maven when Kotlin is not @@ -39,7 +40,7 @@ public void customize(MavenBuild build) { build.settings().sourceDirectory("${project.basedir}/src/main/kotlin") .testSourceDirectory("${project.basedir}/src/test/kotlin"); build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin", (kotlinMavenPlugin) -> { - kotlinMavenPlugin.version("${kotlin.version}"); + kotlinMavenPlugin.version(VersionReference.ofValue("${kotlin.version}")); kotlinMavenPlugin.configuration((configuration) -> { configuration.configure("args", (args) -> this.settings.getCompilerArgs().forEach((arg) -> args.add("arg", arg))); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizerTests.java index d9f8a37eba..849d561739 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/groovy/GroovyMavenBuildCustomizerTests.java @@ -37,7 +37,7 @@ void groovyMavenPluginIsConfigured() { assertThat(build.plugins().values()).singleElement().satisfies((groovyPlugin) -> { assertThat(groovyPlugin.getGroupId()).isEqualTo("org.codehaus.gmavenplus"); assertThat(groovyPlugin.getArtifactId()).isEqualTo("gmavenplus-plugin"); - assertThat(groovyPlugin.getVersion()).isEqualTo("1.11.0"); + assertThat(groovyPlugin.getVersion().getValue()).isEqualTo("1.11.0"); Configuration configuration = groovyPlugin.getConfiguration(); assertThat(configuration).isNull(); assertThat(groovyPlugin.getExecutions()).hasSize(1); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizerTests.java index 2da168d0c1..8f3a7f1ab5 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinMavenFullBuildCustomizerTests.java @@ -57,7 +57,7 @@ void kotlinMavenPluginIsConfigured() { assertThat(build.plugins().values()).singleElement().satisfies((kotlinPlugin) -> { assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin"); assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin"); - assertThat(kotlinPlugin.getVersion()).isEqualTo("${kotlin.version}"); + assertThat(kotlinPlugin.getVersion().getValue()).isEqualTo("${kotlin.version}"); Configuration configuration = kotlinPlugin.getConfiguration(); assertThat(configuration).isNotNull(); assertThat(configuration.getSettings()).hasSize(3); diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriter.java index f2f4a9b811..023bdaf1ba 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriter.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriter.java @@ -366,7 +366,7 @@ private void writePlugin(IndentingWriter writer, MavenPlugin plugin) { writeElement(writer, "plugin", () -> { writeSingleElement(writer, "groupId", plugin.getGroupId()); writeSingleElement(writer, "artifactId", plugin.getArtifactId()); - writeSingleElement(writer, "version", plugin.getVersion()); + writeSingleElement(writer, "version", plugin.getVersion().getValue()); if (plugin.isExtensions()) { writeSingleElement(writer, "extensions", "true"); } diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenPlugin.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenPlugin.java index 4cfdc3ed35..c34901a9d2 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenPlugin.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/maven/MavenPlugin.java @@ -24,6 +24,8 @@ import java.util.function.Consumer; import java.util.stream.Collectors; +import io.spring.initializr.generator.version.VersionReference; + /** * A plugin in a {@link MavenBuild}. * @@ -36,7 +38,7 @@ public class MavenPlugin { private final String artifactId; - private final String version; + private final VersionReference version; private final boolean extensions; @@ -76,9 +78,9 @@ public String getArtifactId() { /** * Return the version of the plugin or {@code null} if the version of the plugin is * managed. - * @return the version or {@code null} + * @return the {@link VersionReference} or {@code null} */ - public String getVersion() { + public VersionReference getVersion() { return this.version; } @@ -123,7 +125,7 @@ public static class Builder { private final String artifactId; - private String version; + private VersionReference version; private boolean extensions; @@ -144,7 +146,7 @@ protected Builder(String groupId, String artifactId) { * @param version the version of the plugin or {@code null} * @return this for method chaining */ - public Builder version(String version) { + public Builder version(VersionReference version) { this.version = version; return this; } diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildTests.java index 20a8eee670..ff38069f5d 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildTests.java @@ -16,6 +16,7 @@ package io.spring.initializr.generator.buildsystem.maven; +import io.spring.initializr.generator.version.VersionReference; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -76,11 +77,12 @@ void mavenPluginCanBeConfigured() { void mavenPluginVersionCanBeAmended() { MavenBuild build = new MavenBuild(); build.plugins().add("com.example", "test-plugin"); - build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.version("1.0.0")); + build.plugins().add("com.example", "test-plugin", + (plugin) -> plugin.version(VersionReference.ofValue("1.0.0"))); assertThat(build.plugins().values()).singleElement().satisfies((testPlugin) -> { assertThat(testPlugin.getGroupId()).isEqualTo("com.example"); assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin"); - assertThat(testPlugin.getVersion()).isEqualTo("1.0.0"); + assertThat(testPlugin.getVersion().getValue()).isEqualTo("1.0.0"); }); } @@ -88,24 +90,26 @@ void mavenPluginVersionCanBeAmended() { @Test void mavenPluginVersionCanBeAmendedWithCustomizer() { MavenBuild build = new MavenBuild(); - build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.version("1.0.0")); - build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.version(null)); + build.plugins().add("com.example", "test-plugin", + (plugin) -> plugin.version(VersionReference.ofValue("1.0.0"))); + build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.version(VersionReference.ofValue(null))); assertThat(build.plugins().values()).singleElement().satisfies((testPlugin) -> { assertThat(testPlugin.getGroupId()).isEqualTo("com.example"); assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin"); - assertThat(testPlugin.getVersion()).isNull(); + assertThat(testPlugin.getVersion().getValue()).isNull(); }); } @Test void mavenPluginVersionIsNotLostOnAmend() { MavenBuild build = new MavenBuild(); - build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.version("1.0.0")); + build.plugins().add("com.example", "test-plugin", + (plugin) -> plugin.version(VersionReference.ofValue("1.0.0"))); build.plugins().add("com.example", "test-plugin"); assertThat(build.plugins().values()).singleElement().satisfies((testPlugin) -> { assertThat(testPlugin.getGroupId()).isEqualTo("com.example"); assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin"); - assertThat(testPlugin.getVersion()).isEqualTo("1.0.0"); + assertThat(testPlugin.getVersion().getValue()).isEqualTo("1.0.0"); }); } diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java index 3ffb6c3e58..3967516628 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java @@ -564,7 +564,7 @@ void pomWithPluginWithExecution() { MavenBuild build = new MavenBuild(); build.settings().coordinates("com.example.demo", "demo"); build.plugins().add("org.asciidoctor", "asciidoctor-maven-plugin", (plugin) -> { - plugin.version("1.5.3"); + plugin.version(VersionReference.ofValue("1.5.3")); plugin.execution("generateProject-docs", (execution) -> { execution.goal("process-asciidoc"); execution.phase("generateProject-resources"); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenPluginContainerTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenPluginContainerTests.java index d7288a672c..71b419ddff 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenPluginContainerTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenPluginContainerTests.java @@ -16,6 +16,7 @@ package io.spring.initializr.generator.buildsystem.maven; +import io.spring.initializr.generator.version.VersionReference; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -42,12 +43,12 @@ void addPlugin() { @Test void addPluginWithConsumer() { MavenPluginContainer pluginContainer = new MavenPluginContainer(); - pluginContainer.add("com.example", "test-plugin", - (plugin) -> plugin.version("1.0").execution("first", (first) -> first.goal("run-this"))); + pluginContainer.add("com.example", "test-plugin", (plugin) -> plugin.version(VersionReference.ofValue("1.0")) + .execution("first", (first) -> first.goal("run-this"))); assertThat(pluginContainer.values()).singleElement().satisfies((plugin) -> { assertThat(plugin.getGroupId()).isEqualTo("com.example"); assertThat(plugin.getArtifactId()).isEqualTo("test-plugin"); - assertThat(plugin.getVersion()).isEqualTo("1.0"); + assertThat(plugin.getVersion().getValue()).isEqualTo("1.0"); assertThat(plugin.getExecutions()).hasSize(1); assertThat(plugin.getExecutions().get(0).getId()).isEqualTo("first"); assertThat(plugin.getExecutions().get(0).getGoals()).containsExactly("run-this"); @@ -57,12 +58,12 @@ void addPluginWithConsumer() { @Test void addPluginSeveralTimeReuseConfiguration() { MavenPluginContainer pluginContainer = new MavenPluginContainer(); - pluginContainer.add("com.example", "test-plugin", (plugin) -> plugin.version("1.0")); - pluginContainer.add("com.example", "test-plugin", (plugin) -> plugin.version("2.0")); + pluginContainer.add("com.example", "test-plugin", (plugin) -> plugin.version(VersionReference.ofValue("1.0"))); + pluginContainer.add("com.example", "test-plugin", (plugin) -> plugin.version(VersionReference.ofValue("2.0"))); assertThat(pluginContainer.values()).singleElement().satisfies((plugin) -> { assertThat(plugin.getGroupId()).isEqualTo("com.example"); assertThat(plugin.getArtifactId()).isEqualTo("test-plugin"); - assertThat(plugin.getVersion()).isEqualTo("2.0"); + assertThat(plugin.getVersion().getValue()).isEqualTo("2.0"); }); }