Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MavenPlugin using VersionReference #1279

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -29,7 +30,7 @@ class GroovyMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
@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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}.
*
Expand All @@ -36,7 +38,7 @@ public class MavenPlugin {

private final String artifactId;

private final String version;
private final VersionReference version;

private final boolean extensions;

Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -123,7 +125,7 @@ public static class Builder {

private final String artifactId;

private String version;
private VersionReference version;

private boolean extensions;

Expand All @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -76,36 +77,39 @@ 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");
});

}

@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");
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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");
Expand All @@ -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");
});
}

Expand Down