Add support for removing build plugins

See gh-978
This commit is contained in:
HaiTao Zhang
2019-08-07 17:43:25 -07:00
committed by Stephane Nicoll
parent f33a661074
commit 083213c904
38 changed files with 717 additions and 310 deletions

View File

@@ -33,7 +33,7 @@ public class GradleConfigurationBuildCustomizer implements BuildCustomizer<Gradl
public void customize(GradleBuild build) {
boolean providedRuntimeUsed = build.dependencies().items()
.anyMatch((dependency) -> DependencyScope.PROVIDED_RUNTIME.equals(dependency.getScope()));
boolean war = build.getPlugins().stream().anyMatch((plugin) -> plugin.getId().equals("war"));
boolean war = build.plugins().values().anyMatch((plugin) -> plugin.getId().equals("war"));
if (providedRuntimeUsed && !war) {
build.addConfiguration("providedRuntime");
}

View File

@@ -90,20 +90,20 @@ public class GradleProjectGenerationConfiguration {
@Bean
@ConditionalOnLanguage(JavaLanguage.ID)
public BuildCustomizer<GradleBuild> javaPluginContributor() {
return (build) -> build.addPlugin("java");
return (build) -> build.plugins().add("java");
}
@Bean
@ConditionalOnPackaging(WarPackaging.ID)
public BuildCustomizer<GradleBuild> warPluginContributor() {
return (build) -> build.addPlugin("war");
return (build) -> build.plugins().add("war");
}
@Bean
@ConditionalOnPlatformVersion("2.0.0.M1")
@ConditionalOnBuildSystem(id = GradleBuildSystem.ID, dialect = GradleBuildSystem.DIALECT_GROOVY)
public BuildCustomizer<GradleBuild> applyDependencyManagementPluginContributor() {
return (build) -> build.applyPlugin("io.spring.dependency-management");
return (build) -> build.plugins().apply("io.spring.dependency-management");
}
@Bean
@@ -149,7 +149,7 @@ public class GradleProjectGenerationConfiguration {
build.buildscript(
(buildscript) -> buildscript.dependency("org.springframework.boot:spring-boot-gradle-plugin:"
+ projectDescription.getPlatformVersion()));
build.applyPlugin("org.springframework.boot");
build.plugins().apply("org.springframework.boot");
};
}
@@ -206,8 +206,8 @@ public class GradleProjectGenerationConfiguration {
@Bean
BuildCustomizer<GradleBuild> springBootPluginContributor(ResolvedProjectDescription projectDescription) {
return (build) -> build.addPlugin("org.springframework.boot",
projectDescription.getPlatformVersion().toString());
return (build) -> build.plugins().add("org.springframework.boot",
(plugin) -> plugin.setVersion(projectDescription.getPlatformVersion().toString()));
}
@Bean
@@ -247,9 +247,10 @@ public class GradleProjectGenerationConfiguration {
BuildCustomizer<GradleBuild> springBootPluginContributor(ResolvedProjectDescription projectDescription,
InitializrMetadata metadata) {
return (build) -> {
build.addPlugin("org.springframework.boot", projectDescription.getPlatformVersion().toString());
build.addPlugin("io.spring.dependency-management",
metadata.getConfiguration().getEnv().getGradle().getDependencyManagementPluginVersion());
build.plugins().add("org.springframework.boot",
(plugin) -> plugin.setVersion(projectDescription.getPlatformVersion().toString()));
build.plugins().add("io.spring.dependency-management", (plugin) -> plugin.setVersion(
metadata.getConfiguration().getEnv().getGradle().getDependencyManagementPluginVersion()));
};
}

View File

@@ -46,7 +46,7 @@ public class DefaultMavenBuildCustomizer implements BuildCustomizer<MavenBuild>
build.setName(this.projectDescription.getName());
build.setDescription(this.projectDescription.getDescription());
build.setProperty("java.version", this.projectDescription.getLanguage().jvmVersion());
build.plugin("org.springframework.boot", "spring-boot-maven-plugin");
build.plugins().add("org.springframework.boot", "spring-boot-maven-plugin");
Maven maven = this.metadata.getConfiguration().getEnv().getMaven();
String springBootVersion = this.projectDescription.getPlatformVersion().toString();

View File

@@ -28,7 +28,7 @@ class GroovyGradleBuildCustomizer implements BuildCustomizer<GradleBuild> {
@Override
public void customize(GradleBuild build) {
build.addPlugin("groovy");
build.plugins().add("groovy");
}
}

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.groovy;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.spring.build.BuildCustomizer;
/**
@@ -29,11 +28,13 @@ class GroovyMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
@Override
public void customize(MavenBuild build) {
MavenPlugin groovyMavenPlugin = build.plugin("org.codehaus.gmavenplus", "gmavenplus-plugin", "1.6.3");
groovyMavenPlugin.execution(null,
(execution) -> execution.goal("addSources").goal("addTestSources").goal("generateStubs").goal("compile")
.goal("generateTestStubs").goal("compileTests").goal("removeStubs").goal("removeTestStubs"));
build.plugins().add("org.codehaus.gmavenplus", "gmavenplus-plugin", (groovyMavenPlugin) -> {
groovyMavenPlugin.setVersion("1.6.3");
groovyMavenPlugin.execution(null,
(execution) -> execution.goal("addSources").goal("addTestSources").goal("generateStubs")
.goal("compile").goal("generateTestStubs").goal("compileTests").goal("removeStubs")
.goal("removeTestStubs"));
});
}
}

View File

@@ -38,8 +38,9 @@ abstract class KotlinGradleBuildCustomizer implements BuildCustomizer<GradleBuil
@Override
public void customize(GradleBuild build) {
build.addPlugin("org.jetbrains.kotlin.jvm", this.settings.getVersion());
build.addPlugin("org.jetbrains.kotlin.plugin.spring", this.settings.getVersion());
build.plugins().add("org.jetbrains.kotlin.jvm", (plugin) -> plugin.setVersion(this.settings.getVersion()));
build.plugins().add("org.jetbrains.kotlin.plugin.spring",
(plugin) -> plugin.setVersion(this.settings.getVersion()));
build.customizeTasksWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
(compile) -> customizeKotlinOptions(this.settings, compile));
}

View File

@@ -42,7 +42,8 @@ public class KotlinJpaGradleBuildCustomizer implements BuildCustomizer<GradleBui
@Override
public void customize(GradleBuild build) {
if (this.buildMetadataResolver.hasFacet(build, "jpa")) {
build.addPlugin("org.jetbrains.kotlin.plugin.jpa", this.settings.getVersion());
build.plugins().add("org.jetbrains.kotlin.plugin.jpa",
(plugin) -> plugin.setVersion(this.settings.getVersion()));
}
}

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.kotlin;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.spring.build.BuildCustomizer;
import io.spring.initializr.generator.spring.build.BuildMetadataResolver;
import io.spring.initializr.metadata.InitializrMetadata;
@@ -40,10 +39,11 @@ public class KotlinJpaMavenBuildCustomizer implements BuildCustomizer<MavenBuild
@Override
public void customize(MavenBuild build) {
if (this.buildMetadataResolver.hasFacet(build, "jpa")) {
MavenPlugin kotlinPlugin = build.plugin("org.jetbrains.kotlin", "kotlin-maven-plugin");
kotlinPlugin.configuration((configuration) -> configuration.configure("compilerPlugins",
(compilerPlugins) -> compilerPlugins.add("plugin", "jpa")));
kotlinPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-noarg", "${kotlin.version}");
build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin", (kotlinPlugin) -> {
kotlinPlugin.configuration((configuration) -> configuration.configure("compilerPlugins",
(compilerPlugins) -> compilerPlugins.add("plugin", "jpa")));
kotlinPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-noarg", "${kotlin.version}");
});
}
}

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.kotlin;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.spring.build.BuildCustomizer;
/**
@@ -42,13 +41,15 @@ class KotlinMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
build.setProperty("kotlin.version", this.settings.getVersion());
build.setSourceDirectory("${project.basedir}/src/main/kotlin");
build.setTestSourceDirectory("${project.basedir}/src/test/kotlin");
MavenPlugin kotlinMavenPlugin = build.plugin("org.jetbrains.kotlin", "kotlin-maven-plugin");
kotlinMavenPlugin.configuration((configuration) -> {
configuration.configure("args",
(args) -> this.settings.getCompilerArgs().forEach((arg) -> args.add("arg", arg)));
configuration.configure("compilerPlugins", (compilerPlugins) -> compilerPlugins.add("plugin", "spring"));
build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin", (kotlinMavenPlugin) -> {
kotlinMavenPlugin.configuration((configuration) -> {
configuration.configure("args",
(args) -> this.settings.getCompilerArgs().forEach((arg) -> args.add("arg", arg)));
configuration.configure("compilerPlugins",
(compilerPlugins) -> compilerPlugins.add("plugin", "spring"));
});
kotlinMavenPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}");
});
kotlinMavenPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}");
}
}

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.kotlin;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.spring.build.BuildCustomizer;
/**
@@ -39,17 +38,21 @@ class KotlinMavenFullBuildCustomizer implements BuildCustomizer<MavenBuild> {
build.setProperty("kotlin.version", this.settings.getVersion());
build.setSourceDirectory("${project.basedir}/src/main/kotlin");
build.setTestSourceDirectory("${project.basedir}/src/test/kotlin");
MavenPlugin kotlinMavenPlugin = build.plugin("org.jetbrains.kotlin", "kotlin-maven-plugin",
"${kotlin.version}");
kotlinMavenPlugin.configuration((configuration) -> {
configuration.configure("args",
(args) -> this.settings.getCompilerArgs().forEach((arg) -> args.add("arg", arg)));
configuration.configure("compilerPlugins", (compilerPlugins) -> compilerPlugins.add("plugin", "spring"));
configuration.add("jvmTarget", this.settings.getJvmTarget());
build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin", (kotlinMavenPlugin) -> {
kotlinMavenPlugin.setVersion("${kotlin.version}");
kotlinMavenPlugin.configuration((configuration) -> {
configuration.configure("args",
(args) -> this.settings.getCompilerArgs().forEach((arg) -> args.add("arg", arg)));
configuration.configure("compilerPlugins",
(compilerPlugins) -> compilerPlugins.add("plugin", "spring"));
configuration.add("jvmTarget", this.settings.getJvmTarget());
});
kotlinMavenPlugin.execution("compile", (compile) -> compile.phase("compile").goal("compile"));
kotlinMavenPlugin.execution("test-compile",
(compile) -> compile.phase("test-compile").goal("test-compile"));
kotlinMavenPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}");
});
kotlinMavenPlugin.execution("compile", (compile) -> compile.phase("compile").goal("compile"));
kotlinMavenPlugin.execution("test-compile", (compile) -> compile.phase("test-compile").goal("test-compile"));
kotlinMavenPlugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}");
}
}

View File

@@ -96,7 +96,7 @@ class GradleBuildProjectContributorTests {
IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory.create(new SimpleIndentStrategy(" "),
(factory) -> factory.indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
GradleBuild build = new GradleBuild();
build.addPlugin("java");
build.plugins().add("java");
List<String> lines = generateBuild(kotlinDslGradleBuildProjectContributor(build, indentingWriterFactory));
assertThat(lines).containsSequence("plugins {", " java", "}");
}

View File

@@ -41,7 +41,7 @@ class GradleConfigurationBuildCustomizerTests {
@Test
void providedRuntimeConfigurationIsNotAddedWithWarProject() {
GradleBuild build = new GradleBuild();
build.addPlugin("war");
build.plugins().add("war");
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
build.dependencies().add("servlet", "javax.servlet", "servlet-api", DependencyScope.PROVIDED_RUNTIME);
customize(build);

View File

@@ -19,7 +19,6 @@ package io.spring.initializr.generator.spring.build.maven;
import io.spring.initializr.generator.buildsystem.BomContainer;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenParent;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
@@ -54,11 +53,12 @@ class DefaultMavenBuildCustomizerTests {
void customizeRegisterSpringBootPlugin() {
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build();
MavenBuild build = customizeBuild(metadata);
assertThat(build.getPlugins()).hasSize(1);
MavenPlugin mavenPlugin = build.getPlugins().get(0);
assertThat(mavenPlugin.getGroupId()).isEqualTo("org.springframework.boot");
assertThat(mavenPlugin.getArtifactId()).isEqualTo("spring-boot-maven-plugin");
assertThat(mavenPlugin.getVersion()).isNull();
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((mavenPlugin) -> {
assertThat(mavenPlugin.getGroupId()).isEqualTo("org.springframework.boot");
assertThat(mavenPlugin.getArtifactId()).isEqualTo("spring-boot-maven-plugin");
assertThat(mavenPlugin.getVersion()).isNull();
});
}
@Test

View File

@@ -32,8 +32,8 @@ class GroovyGradleBuildCustomizerTests {
void groovyPluginIsConfigured() {
GradleBuild build = new GradleBuild();
new GroovyGradleBuildCustomizer().customize(build);
assertThat(build.getPlugins()).hasSize(1);
assertThat(build.getPlugins().get(0).getId()).isEqualTo("groovy");
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((plugin) -> assertThat(plugin.getId()).isEqualTo("groovy"));
}
}

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.groovy;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Configuration;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Execution;
import org.junit.jupiter.api.Test;
@@ -35,20 +34,21 @@ class GroovyMavenBuildCustomizerTests {
void groovyMavenPluginIsConfigured() {
MavenBuild build = new MavenBuild();
new GroovyMavenBuildCustomizer().customize(build);
assertThat(build.getPlugins()).hasSize(1);
MavenPlugin groovyPlugin = build.getPlugins().get(0);
assertThat(groovyPlugin.getGroupId()).isEqualTo("org.codehaus.gmavenplus");
assertThat(groovyPlugin.getArtifactId()).isEqualTo("gmavenplus-plugin");
assertThat(groovyPlugin.getVersion()).isEqualTo("1.6.3");
Configuration configuration = groovyPlugin.getConfiguration();
assertThat(configuration).isNull();
assertThat(groovyPlugin.getExecutions()).hasSize(1);
Execution execution = groovyPlugin.getExecutions().get(0);
assertThat(execution.getId()).isNull();
assertThat(execution.getGoals()).containsExactly("addSources", "addTestSources", "generateStubs", "compile",
"generateTestStubs", "compileTests", "removeStubs", "removeTestStubs");
assertThat(execution.getPhase()).isNull();
assertThat(execution.getConfiguration()).isNull();
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((groovyPlugin) -> {
assertThat(groovyPlugin.getGroupId()).isEqualTo("org.codehaus.gmavenplus");
assertThat(groovyPlugin.getArtifactId()).isEqualTo("gmavenplus-plugin");
assertThat(groovyPlugin.getVersion()).isEqualTo("1.6.3");
Configuration configuration = groovyPlugin.getConfiguration();
assertThat(configuration).isNull();
assertThat(groovyPlugin.getExecutions()).hasSize(1);
Execution execution = groovyPlugin.getExecutions().get(0);
assertThat(execution.getId()).isNull();
assertThat(execution.getGoals()).containsExactly("addSources", "addTestSources", "generateStubs", "compile",
"generateTestStubs", "compileTests", "removeStubs", "removeTestStubs");
assertThat(execution.getPhase()).isNull();
assertThat(execution.getConfiguration()).isNull();
});
}
}

View File

@@ -16,8 +16,11 @@
package io.spring.initializr.generator.spring.code.kotlin;
import java.util.Collections;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -34,11 +37,11 @@ class GroovyDslKotlinGradleBuildCustomizerTests {
void kotlinPluginsAreConfigured() {
GradleBuild build = new GradleBuild();
new GroovyDslKotlinGradleBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
assertThat(build.getPlugins()).hasSize(2);
assertThat(build.getPlugins().get(0).getId()).isEqualTo("org.jetbrains.kotlin.jvm");
assertThat(build.getPlugins().get(0).getVersion()).isEqualTo("1.2.70");
assertThat(build.getPlugins().get(1).getId()).isEqualTo("org.jetbrains.kotlin.plugin.spring");
assertThat(build.getPlugins().get(1).getVersion()).isEqualTo("1.2.70");
assertThat(build.plugins().values()).hasSize(2);
assertThat(build.plugins().values().map(
(plugin) -> Collections.singletonMap(plugin.getId(), ((StandardGradlePlugin) plugin).getVersion())))
.containsExactlyInAnyOrder(Collections.singletonMap("org.jetbrains.kotlin.jvm", "1.2.70"),
Collections.singletonMap("org.jetbrains.kotlin.plugin.spring", "1.2.70"));
}
@Test

View File

@@ -16,8 +16,11 @@
package io.spring.initializr.generator.spring.code.kotlin;
import java.util.Collections;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -33,11 +36,11 @@ class KotlinDslKotlinGradleBuildCustomizerTests {
void kotlinPluginsAreConfigured() {
GradleBuild build = new GradleBuild();
new KotlinDslKotlinGradleBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
assertThat(build.getPlugins()).hasSize(2);
assertThat(build.getPlugins().get(0).getId()).isEqualTo("org.jetbrains.kotlin.jvm");
assertThat(build.getPlugins().get(0).getVersion()).isEqualTo("1.2.70");
assertThat(build.getPlugins().get(1).getId()).isEqualTo("org.jetbrains.kotlin.plugin.spring");
assertThat(build.getPlugins().get(1).getVersion()).isEqualTo("1.2.70");
assertThat(build.plugins().values()).hasSize(2);
assertThat(build.plugins().values().map(
(plugin) -> Collections.singletonMap(plugin.getId(), ((StandardGradlePlugin) plugin).getVersion())))
.containsExactlyInAnyOrder(Collections.singletonMap("org.jetbrains.kotlin.jvm", "1.2.70"),
Collections.singletonMap("org.jetbrains.kotlin.plugin.spring", "1.2.70"));
}
@Test

View File

@@ -19,6 +19,7 @@ package io.spring.initializr.generator.spring.code.kotlin;
import java.util.Collections;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
@@ -40,18 +41,20 @@ class KotlinJpaGradleBuildCustomizerTests {
Dependency dependency = Dependency.withId("foo");
dependency.setFacets(Collections.singletonList("jpa"));
GradleBuild build = getCustomizedBuild(dependency);
assertThat(build.getAppliedPlugins()).isEmpty();
assertThat(build.getPlugins()).hasSize(1);
assertThat(build.getPlugins().get(0).getId()).isEqualTo("org.jetbrains.kotlin.plugin.jpa");
assertThat(build.getPlugins().get(0).getVersion()).isEqualTo("1.2.70");
assertThat(build.plugins().values().filter((plugin) -> plugin.isApply())).isEmpty();
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((plugin) -> {
assertThat(plugin.getId()).isEqualTo("org.jetbrains.kotlin.plugin.jpa");
assertThat(((StandardGradlePlugin) plugin).getVersion()).isEqualTo("1.2.70");
});
}
@Test
void customizeWhenJpaFacetAbsentShouldNotAddKotlinJpaPlugin() {
Dependency dependency = Dependency.withId("foo");
GradleBuild build = getCustomizedBuild(dependency);
assertThat(build.getAppliedPlugins()).isEmpty();
assertThat(build.getPlugins()).isEmpty();
assertThat(build.plugins().values().filter((plugin) -> plugin.isApply())).isEmpty();
assertThat(build.plugins().values()).isEmpty();
}
private GradleBuild getCustomizedBuild(Dependency dependency) {

View File

@@ -42,25 +42,26 @@ class KotlinJpaMavenBuildCustomizerTests {
Dependency dependency = Dependency.withId("foo");
dependency.setFacets(Collections.singletonList("jpa"));
MavenBuild build = getCustomizedBuild(dependency);
assertThat(build.getPlugins()).hasSize(1);
MavenPlugin plugin = build.getPlugins().get(0);
assertThat(plugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(plugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
MavenPlugin.Setting settings = plugin.getConfiguration().getSettings().get(0);
assertThat(settings.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "jpa");
assertThat(plugin.getDependencies()).hasSize(1);
MavenPlugin.Dependency pluginDependency = plugin.getDependencies().get(0);
assertThat(pluginDependency.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(pluginDependency.getArtifactId()).isEqualTo("kotlin-maven-noarg");
assertThat(pluginDependency.getVersion()).isEqualTo("${kotlin.version}");
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((plugin) -> {
assertThat(plugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(plugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
MavenPlugin.Setting settings = plugin.getConfiguration().getSettings().get(0);
assertThat(settings.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "jpa");
assertThat(plugin.getDependencies()).hasSize(1);
MavenPlugin.Dependency pluginDependency = plugin.getDependencies().get(0);
assertThat(pluginDependency.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(pluginDependency.getArtifactId()).isEqualTo("kotlin-maven-noarg");
assertThat(pluginDependency.getVersion()).isEqualTo("${kotlin.version}");
});
}
@Test
void customizeWhenJpaFacetAbsentShouldNotAddKotlinJpaPlugin() {
Dependency dependency = Dependency.withId("foo");
MavenBuild build = getCustomizedBuild(dependency);
assertThat(build.getPlugins()).hasSize(0);
assertThat(build.plugins().values()).hasSize(0);
}
private MavenBuild getCustomizedBuild(Dependency dependency) {

View File

@@ -20,7 +20,6 @@ import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Configuration;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Dependency;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Setting;
@@ -55,44 +54,48 @@ class KotlinMavenBuildCustomizerTests {
void kotlinMavenPluginIsConfigured() {
MavenBuild build = new MavenBuild();
new KotlinMavenBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
assertThat(build.getPlugins()).hasSize(1);
MavenPlugin kotlinPlugin = build.getPlugins().get(0);
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
assertThat(kotlinPlugin.getVersion()).isNull();
Configuration configuration = kotlinPlugin.getConfiguration();
assertThat(configuration).isNotNull();
assertThat(configuration.getSettings()).hasSize(2);
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(1);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Xjsr305=strict");
Setting compilerPlugins = configuration.getSettings().get(1);
assertThat(compilerPlugins.getName()).isEqualTo("compilerPlugins");
assertThat(compilerPlugins.getValue()).asList().hasSize(1);
assertThat(compilerPlugins.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "spring");
assertThat(kotlinPlugin.getExecutions()).isEmpty();
assertThat(kotlinPlugin.getDependencies()).hasSize(1);
Dependency allOpen = kotlinPlugin.getDependencies().get(0);
assertThat(allOpen.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(allOpen.getArtifactId()).isEqualTo("kotlin-maven-allopen");
assertThat(allOpen.getVersion()).isEqualTo("${kotlin.version}");
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
assertThat(kotlinPlugin.getVersion()).isNull();
Configuration configuration = kotlinPlugin.getConfiguration();
assertThat(configuration).isNotNull();
assertThat(configuration.getSettings()).hasSize(2);
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(1);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Xjsr305=strict");
Setting compilerPlugins = configuration.getSettings().get(1);
assertThat(compilerPlugins.getName()).isEqualTo("compilerPlugins");
assertThat(compilerPlugins.getValue()).asList().hasSize(1);
assertThat(compilerPlugins.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "spring");
assertThat(kotlinPlugin.getExecutions()).isEmpty();
assertThat(kotlinPlugin.getDependencies()).hasSize(1);
Dependency allOpen = kotlinPlugin.getDependencies().get(0);
assertThat(allOpen.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(allOpen.getArtifactId()).isEqualTo("kotlin-maven-allopen");
assertThat(allOpen.getVersion()).isEqualTo("${kotlin.version}");
});
}
@Test
void kotlinMavenPluginWithSeveralArgs() {
MavenBuild build = new MavenBuild();
new KotlinMavenBuildCustomizer(new TestKotlinProjectSettings()).customize(build);
Configuration configuration = build.getPlugins().get(0).getConfiguration();
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(2);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Done=1");
assertThat(args.getValue()).asList().element(1).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Dtwo=2");
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
Configuration configuration = kotlinPlugin.getConfiguration();
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(2);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Done=1");
assertThat(args.getValue()).asList().element(1).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Dtwo=2");
});
}
private static class TestKotlinProjectSettings extends SimpleKotlinProjectSettings {

View File

@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.code.kotlin;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Configuration;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Dependency;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin.Execution;
@@ -53,43 +52,44 @@ class KotlinMavenFullBuildCustomizerTests {
void kotlinMavenPluginIsConfigured() {
MavenBuild build = new MavenBuild();
new KotlinMavenFullBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
assertThat(build.getPlugins()).hasSize(1);
MavenPlugin kotlinPlugin = build.getPlugins().get(0);
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
assertThat(kotlinPlugin.getVersion()).isEqualTo("${kotlin.version}");
Configuration configuration = kotlinPlugin.getConfiguration();
assertThat(configuration).isNotNull();
assertThat(configuration.getSettings()).hasSize(3);
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(1);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Xjsr305=strict");
Setting compilerPlugins = configuration.getSettings().get(1);
assertThat(compilerPlugins.getName()).isEqualTo("compilerPlugins");
assertThat(compilerPlugins.getValue()).asList().hasSize(1);
assertThat(compilerPlugins.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "spring");
Setting jvmTarget = configuration.getSettings().get(2);
assertThat(jvmTarget.getName()).isEqualTo("jvmTarget");
assertThat(jvmTarget.getValue()).isEqualTo("1.8");
assertThat(kotlinPlugin.getExecutions()).hasSize(2);
Execution compile = kotlinPlugin.getExecutions().get(0);
assertThat(compile.getId()).isEqualTo("compile");
assertThat(compile.getGoals()).containsExactly("compile");
assertThat(compile.getPhase()).isEqualTo("compile");
assertThat(compile.getConfiguration()).isNull();
Execution testCompile = kotlinPlugin.getExecutions().get(1);
assertThat(testCompile.getId()).isEqualTo("test-compile");
assertThat(testCompile.getGoals()).containsExactly("test-compile");
assertThat(testCompile.getPhase()).isEqualTo("test-compile");
assertThat(testCompile.getConfiguration()).isNull();
assertThat(kotlinPlugin.getDependencies()).hasSize(1);
Dependency allOpen = kotlinPlugin.getDependencies().get(0);
assertThat(allOpen.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(allOpen.getArtifactId()).isEqualTo("kotlin-maven-allopen");
assertThat(allOpen.getVersion()).isEqualTo("${kotlin.version}");
assertThat(build.plugins().values()).hasSize(1);
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
assertThat(kotlinPlugin.getVersion()).isEqualTo("${kotlin.version}");
Configuration configuration = kotlinPlugin.getConfiguration();
assertThat(configuration).isNotNull();
assertThat(configuration.getSettings()).hasSize(3);
Setting args = configuration.getSettings().get(0);
assertThat(args.getName()).isEqualTo("args");
assertThat(args.getValue()).asList().hasSize(1);
assertThat(args.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "arg")
.hasFieldOrPropertyWithValue("value", "-Xjsr305=strict");
Setting compilerPlugins = configuration.getSettings().get(1);
assertThat(compilerPlugins.getName()).isEqualTo("compilerPlugins");
assertThat(compilerPlugins.getValue()).asList().hasSize(1);
assertThat(compilerPlugins.getValue()).asList().element(0).hasFieldOrPropertyWithValue("name", "plugin")
.hasFieldOrPropertyWithValue("value", "spring");
Setting jvmTarget = configuration.getSettings().get(2);
assertThat(jvmTarget.getName()).isEqualTo("jvmTarget");
assertThat(jvmTarget.getValue()).isEqualTo("1.8");
assertThat(kotlinPlugin.getExecutions()).hasSize(2);
Execution compile = kotlinPlugin.getExecutions().get(0);
assertThat(compile.getId()).isEqualTo("compile");
assertThat(compile.getGoals()).containsExactly("compile");
assertThat(compile.getPhase()).isEqualTo("compile");
assertThat(compile.getConfiguration()).isNull();
Execution testCompile = kotlinPlugin.getExecutions().get(1);
assertThat(testCompile.getId()).isEqualTo("test-compile");
assertThat(testCompile.getGoals()).containsExactly("test-compile");
assertThat(testCompile.getPhase()).isEqualTo("test-compile");
assertThat(testCompile.getConfiguration()).isNull();
assertThat(kotlinPlugin.getDependencies()).hasSize(1);
Dependency allOpen = kotlinPlugin.getDependencies().get(0);
assertThat(allOpen.getGroupId()).isEqualTo("org.jetbrains.kotlin");
assertThat(allOpen.getArtifactId()).isEqualTo("kotlin-maven-allopen");
assertThat(allOpen.getVersion()).isEqualTo("${kotlin.version}");
});
}
}