mirror of
https://gitee.com/dcren/initializr.git
synced 2026-02-25 21:22:58 +08:00
Polish "Add support for removing build plugins"
See gh-978
This commit is contained in:
@@ -53,8 +53,7 @@ class DefaultMavenBuildCustomizerTests {
|
||||
void customizeRegisterSpringBootPlugin() {
|
||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build();
|
||||
MavenBuild build = customizeBuild(metadata);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((mavenPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((mavenPlugin) -> {
|
||||
assertThat(mavenPlugin.getGroupId()).isEqualTo("org.springframework.boot");
|
||||
assertThat(mavenPlugin.getArtifactId()).isEqualTo("spring-boot-maven-plugin");
|
||||
assertThat(mavenPlugin.getVersion()).isNull();
|
||||
|
||||
@@ -32,8 +32,8 @@ class GroovyGradleBuildCustomizerTests {
|
||||
void groovyPluginIsConfigured() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
new GroovyGradleBuildCustomizer().customize(build);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((plugin) -> assertThat(plugin.getId()).isEqualTo("groovy"));
|
||||
assertThat(build.plugins().values())
|
||||
.hasOnlyOneElementSatisfying((plugin) -> assertThat(plugin.getId()).isEqualTo("groovy"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,8 +34,7 @@ class GroovyMavenBuildCustomizerTests {
|
||||
void groovyMavenPluginIsConfigured() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new GroovyMavenBuildCustomizer().customize(build);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((groovyPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((groovyPlugin) -> {
|
||||
assertThat(groovyPlugin.getGroupId()).isEqualTo("org.codehaus.gmavenplus");
|
||||
assertThat(groovyPlugin.getArtifactId()).isEqualTo("gmavenplus-plugin");
|
||||
assertThat(groovyPlugin.getVersion()).isEqualTo("1.6.3");
|
||||
|
||||
@@ -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.GradlePlugin;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
@@ -41,9 +42,8 @@ class KotlinJpaGradleBuildCustomizerTests {
|
||||
Dependency dependency = Dependency.withId("foo");
|
||||
dependency.setFacets(Collections.singletonList("jpa"));
|
||||
GradleBuild build = getCustomizedBuild(dependency);
|
||||
assertThat(build.plugins().values().filter((plugin) -> plugin.isApply())).isEmpty();
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(build.plugins().values().filter(GradlePlugin::isApply)).isEmpty();
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("org.jetbrains.kotlin.plugin.jpa");
|
||||
assertThat(((StandardGradlePlugin) plugin).getVersion()).isEqualTo("1.2.70");
|
||||
});
|
||||
@@ -53,7 +53,7 @@ class KotlinJpaGradleBuildCustomizerTests {
|
||||
void customizeWhenJpaFacetAbsentShouldNotAddKotlinJpaPlugin() {
|
||||
Dependency dependency = Dependency.withId("foo");
|
||||
GradleBuild build = getCustomizedBuild(dependency);
|
||||
assertThat(build.plugins().values().filter((plugin) -> plugin.isApply())).isEmpty();
|
||||
assertThat(build.plugins().values().filter(GradlePlugin::isApply)).isEmpty();
|
||||
assertThat(build.plugins().values()).isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@@ -42,8 +42,7 @@ class KotlinJpaMavenBuildCustomizerTests {
|
||||
Dependency dependency = Dependency.withId("foo");
|
||||
dependency.setFacets(Collections.singletonList("jpa"));
|
||||
MavenBuild build = getCustomizedBuild(dependency);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
|
||||
assertThat(plugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
|
||||
MavenPlugin.Setting settings = plugin.getConfiguration().getSettings().get(0);
|
||||
@@ -61,7 +60,7 @@ class KotlinJpaMavenBuildCustomizerTests {
|
||||
void customizeWhenJpaFacetAbsentShouldNotAddKotlinJpaPlugin() {
|
||||
Dependency dependency = Dependency.withId("foo");
|
||||
MavenBuild build = getCustomizedBuild(dependency);
|
||||
assertThat(build.plugins().values()).hasSize(0);
|
||||
assertThat(build.plugins().isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
private MavenBuild getCustomizedBuild(Dependency dependency) {
|
||||
|
||||
@@ -54,8 +54,7 @@ class KotlinMavenBuildCustomizerTests {
|
||||
void kotlinMavenPluginIsConfigured() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new KotlinMavenBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((kotlinPlugin) -> {
|
||||
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
|
||||
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
|
||||
assertThat(kotlinPlugin.getVersion()).isNull();
|
||||
@@ -85,8 +84,7 @@ class KotlinMavenBuildCustomizerTests {
|
||||
void kotlinMavenPluginWithSeveralArgs() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new KotlinMavenBuildCustomizer(new TestKotlinProjectSettings()).customize(build);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((kotlinPlugin) -> {
|
||||
Configuration configuration = kotlinPlugin.getConfiguration();
|
||||
Setting args = configuration.getSettings().get(0);
|
||||
assertThat(args.getName()).isEqualTo("args");
|
||||
|
||||
@@ -52,8 +52,7 @@ class KotlinMavenFullBuildCustomizerTests {
|
||||
void kotlinMavenPluginIsConfigured() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new KotlinMavenFullBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((kotlinPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((kotlinPlugin) -> {
|
||||
assertThat(kotlinPlugin.getGroupId()).isEqualTo("org.jetbrains.kotlin");
|
||||
assertThat(kotlinPlugin.getArtifactId()).isEqualTo("kotlin-maven-plugin");
|
||||
assertThat(kotlinPlugin.getVersion()).isEqualTo("${kotlin.version}");
|
||||
|
||||
@@ -46,6 +46,8 @@ public class GradleBuild extends Build {
|
||||
|
||||
private final Map<String, String> ext = new TreeMap<>();
|
||||
|
||||
private final GradlePluginContainer plugins = new GradlePluginContainer();
|
||||
|
||||
private final List<String> configurations = new ArrayList<>();
|
||||
|
||||
private final Map<String, ConfigurationCustomization> configurationCustomizations = new LinkedHashMap<>();
|
||||
@@ -58,8 +60,6 @@ public class GradleBuild extends Build {
|
||||
|
||||
private final Buildscript buildscript = new Buildscript();
|
||||
|
||||
private final GradlePluginContainer plugins = new GradlePluginContainer();
|
||||
|
||||
public GradleBuild(BuildItemResolver buildItemResolver) {
|
||||
super(buildItemResolver);
|
||||
}
|
||||
|
||||
@@ -82,6 +82,11 @@ public abstract class GradleBuildWriter {
|
||||
|
||||
protected abstract void writePlugins(IndentingWriter writer, GradleBuild build);
|
||||
|
||||
protected List<StandardGradlePlugin> extractStandardPlugin(GradleBuild build) {
|
||||
return build.plugins().values().filter(StandardGradlePlugin.class::isInstance)
|
||||
.map(StandardGradlePlugin.class::cast).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
protected abstract void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuild build);
|
||||
|
||||
protected abstract void writeConfigurations(IndentingWriter writer, GradleBuild build);
|
||||
@@ -168,11 +173,6 @@ public abstract class GradleBuildWriter {
|
||||
}
|
||||
}
|
||||
|
||||
protected List<StandardGradlePlugin> extractStandardPlugin(GradleBuild build) {
|
||||
return (List<StandardGradlePlugin>) (List<? extends GradlePlugin>) build.plugins().values()
|
||||
.filter((plugin) -> plugin instanceof StandardGradlePlugin).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void writeBoms(IndentingWriter writer, GradleBuild build) {
|
||||
if (build.boms().isEmpty()) {
|
||||
return;
|
||||
|
||||
@@ -25,7 +25,7 @@ public class GradlePlugin {
|
||||
|
||||
private final String id;
|
||||
|
||||
private boolean apply;
|
||||
private final boolean apply;
|
||||
|
||||
public GradlePlugin(String id, boolean apply) {
|
||||
this.id = id;
|
||||
|
||||
@@ -29,11 +29,7 @@ import java.util.stream.Stream;
|
||||
*/
|
||||
public class GradlePluginContainer {
|
||||
|
||||
private final Map<String, GradlePlugin> plugins;
|
||||
|
||||
public GradlePluginContainer() {
|
||||
this.plugins = new LinkedHashMap<>();
|
||||
}
|
||||
private final Map<String, GradlePlugin> plugins = new LinkedHashMap<>();
|
||||
|
||||
/**
|
||||
* Specify if this container is empty.
|
||||
@@ -44,16 +40,16 @@ public class GradlePluginContainer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if this container has a GradlePlugin with the specified id.
|
||||
* @param id id associated with the {@link GradlePlugin}
|
||||
* @return {@code true} if an object with the specified id is added
|
||||
* Specify if this container has a plugin with the specified id.
|
||||
* @param id the identifier of a gradle plugin
|
||||
* @return {@code true} if a plugin with the specified {@code id} exists
|
||||
*/
|
||||
public boolean has(String id) {
|
||||
return this.plugins.containsKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Stream} of added {@link GradlePlugin}s.
|
||||
* Returns a {@link Stream} of registered {@link GradlePlugin}s.
|
||||
* @return a stream of {@link GradlePlugin}s
|
||||
*/
|
||||
public Stream<GradlePlugin> values() {
|
||||
@@ -61,41 +57,49 @@ public class GradlePluginContainer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link GradlePlugin} to the Gradle's legacy apply block by specifying the id.
|
||||
* @param id id associated with the {@link GradlePlugin}
|
||||
*/
|
||||
public void apply(String id) {
|
||||
addPlugin(id, (pluginId) -> new GradlePlugin(pluginId, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link GradlePlugin} to the Gradle's standard plugins DSL block by specifying
|
||||
* the id.
|
||||
* @param id id associated with the {@link GradlePlugin}
|
||||
* Add a {@link GradlePlugin} to the standard {@code plugins} block with the specified
|
||||
* id. Does nothing if the plugin has already been added.
|
||||
* @param id the id of the plugin
|
||||
* @see #add(String, Consumer)
|
||||
*/
|
||||
public void add(String id) {
|
||||
addPlugin(id, (pluginId) -> new StandardGradlePlugin(pluginId));
|
||||
addPlugin(id, StandardGradlePlugin::new);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link GradlePlugin} to the Gradle's standard plugins DSL block by specifying
|
||||
* the id, along with a {@link Consumer} to customize the object.
|
||||
* @param id id associated with the {@link GradlePlugin}
|
||||
* @param plugin consumer to customize the {@link GradlePlugin}
|
||||
* Add a {@link GradlePlugin} to the standard {@code plugins} block with the specified
|
||||
* id and {@link Consumer} to customize the object. If the plugin has already been
|
||||
* added, the consumer can be used to further tune the existing plugin configuration.
|
||||
* @param id the id of the plugin
|
||||
* @param plugin a {@link Consumer} to customize the {@link GradlePlugin}
|
||||
*/
|
||||
public void add(String id, Consumer<StandardGradlePlugin> plugin) {
|
||||
GradlePlugin gradlePlugin = addPlugin(id, (pluginId) -> new StandardGradlePlugin(pluginId));
|
||||
GradlePlugin gradlePlugin = addPlugin(id, StandardGradlePlugin::new);
|
||||
if (gradlePlugin instanceof StandardGradlePlugin) {
|
||||
plugin.accept((StandardGradlePlugin) gradlePlugin);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean remove(String id) {
|
||||
return this.plugins.remove(id) != null;
|
||||
/**
|
||||
* Apply a {@link GradlePlugin} with the specified id. Does nothing if the plugin has
|
||||
* already been applied.
|
||||
* @param id the id of the plugin
|
||||
*/
|
||||
public void apply(String id) {
|
||||
addPlugin(id, (pluginId) -> new GradlePlugin(pluginId, true));
|
||||
}
|
||||
|
||||
private GradlePlugin addPlugin(String id, Function<String, GradlePlugin> pluginId) {
|
||||
return this.plugins.computeIfAbsent(id, pluginId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the plugin with the specified {@code id}.
|
||||
* @param id the id of the plugin to remove
|
||||
* @return {@code true} if such a plugin was registered, {@code false} otherwise
|
||||
*/
|
||||
public boolean remove(String id) {
|
||||
return this.plugins.remove(id) != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
|
||||
}
|
||||
|
||||
private List<GradlePlugin> extractApplyPlugins(GradleBuild build) {
|
||||
return build.plugins().values().filter((plugin) -> plugin.isApply()).collect(Collectors.toList());
|
||||
return build.plugins().values().filter(GradlePlugin::isApply).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private String pluginAsString(StandardGradlePlugin plugin) {
|
||||
|
||||
@@ -67,16 +67,12 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
protected void writePlugins(IndentingWriter writer, GradleBuild build) {
|
||||
writeNestedCollection(writer, "plugins", extractStandardPlugin(build), this::pluginAsString, null);
|
||||
writer.println();
|
||||
if (checkForApplyPlugins(build)) {
|
||||
if (build.plugins().values().anyMatch(GradlePlugin::isApply)) {
|
||||
throw new IllegalStateException(
|
||||
"build.gradle.kts scripts shouldn't apply plugins. They should use the plugins block instead.");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkForApplyPlugins(GradleBuild build) {
|
||||
return build.plugins().values().anyMatch((gradlePlugin) -> gradlePlugin.isApply());
|
||||
}
|
||||
|
||||
private String pluginAsString(StandardGradlePlugin plugin) {
|
||||
String result = shortPluginNotation(plugin.getId());
|
||||
if (result == null) {
|
||||
|
||||
@@ -16,6 +16,11 @@
|
||||
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
/**
|
||||
* A standard {@link GradlePlugin} used in the {@code plugins} block.
|
||||
*
|
||||
* @author HaiTao Zhang
|
||||
*/
|
||||
public class StandardGradlePlugin extends GradlePlugin {
|
||||
|
||||
private String version;
|
||||
|
||||
@@ -28,11 +28,7 @@ import java.util.stream.Stream;
|
||||
*/
|
||||
public class MavenPluginContainer {
|
||||
|
||||
private final Map<String, MavenPlugin> plugins;
|
||||
|
||||
public MavenPluginContainer() {
|
||||
this.plugins = new LinkedHashMap<>();
|
||||
}
|
||||
private final Map<String, MavenPlugin> plugins = new LinkedHashMap<>();
|
||||
|
||||
/**
|
||||
* Specify if this container is empty.
|
||||
@@ -43,19 +39,19 @@ public class MavenPluginContainer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if this container has a MavenPlugin with the specified groupId and
|
||||
* artifactId.
|
||||
* @param groupId groupId associated with the {@link MavenPlugin}
|
||||
* @param artifactId artifactId associated with the {@link MavenPlugin}
|
||||
* Specify if this container has a plugin with the specified {@code groupId} and
|
||||
* {@code artifactId}.
|
||||
* @param groupId the groupId of the plugin
|
||||
* @param artifactId the artifactId of the plugin
|
||||
* @return {@code true} if an item with the specified {@code groupId} and
|
||||
* {@code artifactId} is added
|
||||
* {@code artifactId} exists
|
||||
*/
|
||||
public boolean has(String groupId, String artifactId) {
|
||||
return this.plugins.containsKey(pluginKey(groupId, artifactId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link Stream} of added {@link MavenPlugin}s.
|
||||
* Returns a {@link Stream} of registered {@link MavenPlugin}s.
|
||||
* @return a stream of {@link MavenPlugin}s
|
||||
*/
|
||||
public Stream<MavenPlugin> values() {
|
||||
@@ -63,31 +59,39 @@ public class MavenPluginContainer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link MavenPlugin} by specifying the groupId and artifactId.
|
||||
* @param groupId groupId associated with the {@link MavenPlugin}
|
||||
* @param artifactId artifactId associated with the {@link MavenPlugin}
|
||||
* Add a {@link MavenPlugin} with the specified {@code groupId} and
|
||||
* {@code artifactId}. Does nothing if the plugin has already been added.
|
||||
* @param groupId the groupId of the plugin
|
||||
* @param artifactId the artifactId of the plugin
|
||||
* @see #add(String, String, Consumer)
|
||||
*/
|
||||
public void add(String groupId, String artifactId) {
|
||||
addPlugin(groupId, artifactId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a {@link MavenPlugin} by specifying the groupId and artifactId, along with a
|
||||
* {@link Consumer} to customize the object.
|
||||
* @param groupId groupId associated with the {@link MavenPlugin}
|
||||
* @param artifactId artifactId associated with the {@link MavenPlugin}
|
||||
* @param plugin {@link Consumer} to customize the object
|
||||
* Add a {@link MavenPlugin}with the specified {@code groupId} and {@code artifactId}
|
||||
* and {@link Consumer} to customize the object. If the plugin has already been *
|
||||
* added, the consumer can be used to further tune the existing plugin configuration.
|
||||
* @param groupId the groupId of the plugin
|
||||
* @param artifactId the artifactId of the plugin
|
||||
* @param plugin a {@link Consumer} to customize the {@link MavenPlugin}
|
||||
*/
|
||||
public void add(String groupId, String artifactId, Consumer<MavenPlugin> plugin) {
|
||||
MavenPlugin mavenPlugin = addPlugin(groupId, artifactId);
|
||||
plugin.accept(mavenPlugin);
|
||||
}
|
||||
|
||||
private MavenPlugin addPlugin(String groupId, String artifactId) {
|
||||
return this.plugins.computeIfAbsent(pluginKey(groupId, artifactId),
|
||||
(pluginId) -> new MavenPlugin(groupId, artifactId));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a {@link MavenPlugin} by specifying the groupId and artifactId.
|
||||
* @param groupId groupId associated with the {@link MavenPlugin}
|
||||
* @param artifactId artifactId associated with the {@link MavenPlugin}
|
||||
* @return {@code true} if an object was removed
|
||||
* Remove the plugin with the specified {@code groupId} and {@code artifactId}.
|
||||
* @param groupId the groupId of the plugin to remove
|
||||
* @param artifactId the artifactId of the plugin to remove
|
||||
* @return {@code true} if such a plugin was registered, {@code false} otherwise
|
||||
*/
|
||||
public boolean remove(String groupId, String artifactId) {
|
||||
return this.plugins.remove(pluginKey(groupId, artifactId)) != null;
|
||||
@@ -97,9 +101,4 @@ public class MavenPluginContainer {
|
||||
return String.format("%s:%s", groupId, artifactId);
|
||||
}
|
||||
|
||||
private MavenPlugin addPlugin(String groupId, String artifactId) {
|
||||
return this.plugins.computeIfAbsent(pluginKey(groupId, artifactId),
|
||||
(pluginId) -> new MavenPlugin(groupId, artifactId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,40 +24,67 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* Tests for {@link GradlePluginContainer}.
|
||||
*
|
||||
* @author HaITao Zhang
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class GradlePluginContainerTests {
|
||||
class GradlePluginContainerTests {
|
||||
|
||||
@Test
|
||||
void addGradlePluginWithOnlyId() {
|
||||
void addPluginWithId() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example");
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin.isApply()).isFalse();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void addGradlePluginWithConsumer() {
|
||||
void addPluginWithConsumer() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example", (plugin) -> plugin.setVersion("1.0"));
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin).isInstanceOf(StandardGradlePlugin.class);
|
||||
assertThat(((StandardGradlePlugin) plugin).getVersion()).isEqualTo("1.0");
|
||||
assertThat(plugin.isApply()).isFalse();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void addPluginSeveralTimeReuseConfiguration() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example", (plugin) -> {
|
||||
assertThat(plugin.getVersion()).isNull();
|
||||
plugin.setVersion("1.0");
|
||||
});
|
||||
pluginContainer.add("com.example", (plugin) -> {
|
||||
assertThat(plugin.getVersion()).isEqualTo("1.0");
|
||||
plugin.setVersion("2.0");
|
||||
});
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin).isInstanceOf(StandardGradlePlugin.class);
|
||||
assertThat(((StandardGradlePlugin) plugin).getVersion()).isEqualTo("2.0");
|
||||
assertThat(plugin.isApply()).isFalse();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradlePlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin.isApply()).isTrue();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyGradlePluginSeveralTimesApplyOnlyOnce() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin.isApply()).isTrue();
|
||||
});
|
||||
@@ -68,8 +95,7 @@ public class GradlePluginContainerTests {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example");
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin.isApply()).isFalse();
|
||||
});
|
||||
@@ -80,11 +106,68 @@ public class GradlePluginContainerTests {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
pluginContainer.add("com.example");
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getId()).isEqualTo("com.example");
|
||||
assertThat(plugin.isApply()).isTrue();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void isEmptyWithEmptyContainer() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
assertThat(pluginContainer.isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isEmptyWithRegisteredPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example");
|
||||
assertThat(pluginContainer.isEmpty()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasPluginWithMatchingStandardPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example");
|
||||
assertThat(pluginContainer.has("com.example")).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasPluginWithMatchingAppliedPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.has("com.example")).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasPluginWithNonMatchingPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.has("com.example.another")).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void removeWithMatchingStandardPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.add("com.example");
|
||||
assertThat(pluginContainer.remove("com.example")).isTrue();
|
||||
assertThat(pluginContainer.isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void removeWithMatchingAppliedPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.remove("com.example")).isTrue();
|
||||
assertThat(pluginContainer.isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void removeWithNonMatchingPlugin() {
|
||||
GradlePluginContainer pluginContainer = new GradlePluginContainer();
|
||||
pluginContainer.apply("com.example");
|
||||
assertThat(pluginContainer.remove("com.example.another")).isFalse();
|
||||
assertThat(pluginContainer.isEmpty()).isFalse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -89,8 +89,7 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithPluginAndVersion() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.springframework.boot",
|
||||
(StandardGradlePlugin standardGradlePlugin) -> standardGradlePlugin.setVersion("2.1.0.RELEASE"));
|
||||
build.plugins().add("org.springframework.boot", (plugin) -> plugin.setVersion("2.1.0.RELEASE"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " id 'org.springframework.boot' version '2.1.0.RELEASE'",
|
||||
"}");
|
||||
|
||||
@@ -91,10 +91,8 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithKotlinPluginAndVersion() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.jetbrains.kotlin.jvm",
|
||||
(StandardGradlePlugin standardGradlePlugin) -> standardGradlePlugin.setVersion("1.3.21"));
|
||||
build.plugins().add("org.jetbrains.kotlin.plugin.spring",
|
||||
(StandardGradlePlugin standardGradlePlugin) -> standardGradlePlugin.setVersion("1.3.21"));
|
||||
build.plugins().add("org.jetbrains.kotlin.jvm", (plugin) -> plugin.setVersion("1.3.21"));
|
||||
build.plugins().add("org.jetbrains.kotlin.plugin.spring", (plugin) -> plugin.setVersion("1.3.21"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " kotlin(\"jvm\") version \"1.3.21\"",
|
||||
" kotlin(\"plugin.spring\") version \"1.3.21\"", "}");
|
||||
@@ -103,8 +101,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithPluginAndVersion() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.springframework.boot",
|
||||
(StandardGradlePlugin standardGradlePlugin) -> standardGradlePlugin.setVersion("2.1.0.RELEASE"));
|
||||
build.plugins().add("org.springframework.boot", (plugin) -> plugin.setVersion("2.1.0.RELEASE"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {",
|
||||
" id(\"org.springframework.boot\") version \"2.1.0.RELEASE\"", "}");
|
||||
|
||||
@@ -33,8 +33,7 @@ class MavenBuildTests {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin",
|
||||
(plugin) -> plugin.execution("first", (first) -> first.goal("run-this")));
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((testPlugin) -> {
|
||||
assertThat(testPlugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(testPlugin.getVersion()).isNull();
|
||||
@@ -49,8 +48,7 @@ class MavenBuildTests {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin");
|
||||
build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.setVersion("1.0.0"));
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((testPlugin) -> {
|
||||
assertThat(testPlugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(testPlugin.getVersion()).isEqualTo("1.0.0");
|
||||
@@ -63,8 +61,7 @@ class MavenBuildTests {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.setVersion("1.0.0"));
|
||||
build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.setVersion(null));
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((testPlugin) -> {
|
||||
assertThat(testPlugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(testPlugin.getVersion()).isNull();
|
||||
@@ -76,22 +73,13 @@ class MavenBuildTests {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.setVersion("1.0.0"));
|
||||
build.plugins().add("com.example", "test-plugin");
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((testPlugin) -> {
|
||||
assertThat(testPlugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(testPlugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(testPlugin.getVersion()).isEqualTo("1.0.0");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void mavenPluginCanBeRemoved() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin");
|
||||
build.plugins().remove("com.example", "test-plugin");
|
||||
assertThat(build.plugins().values()).hasSize(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
void mavenPluginExecutionCanBeAmended() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
@@ -99,8 +87,7 @@ class MavenBuildTests {
|
||||
(plugin) -> plugin.execution("first", (first) -> first.goal("run-this")));
|
||||
build.plugins().add("com.example", "test-plugin",
|
||||
(plugin) -> plugin.execution("first", (first) -> first.goal("run-that")));
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> {
|
||||
assertThat(build.plugins().values()).hasOnlyOneElementSatisfying((testPlugin) -> {
|
||||
assertThat(testPlugin.getExecutions()).hasSize(1);
|
||||
assertThat(testPlugin.getExecutions().get(0).getId()).isEqualTo("first");
|
||||
assertThat(testPlugin.getExecutions().get(0).getGoals()).containsExactly("run-this", "run-that");
|
||||
@@ -111,16 +98,16 @@ class MavenBuildTests {
|
||||
void mavenPluginExtensionsNotLoadedByDefault() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin");
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> assertThat(testPlugin.isExtensions()).isFalse());
|
||||
assertThat(build.plugins().values())
|
||||
.hasOnlyOneElementSatisfying((testPlugin) -> assertThat(testPlugin.isExtensions()).isFalse());
|
||||
}
|
||||
|
||||
@Test
|
||||
void mavenPluginExtensionsCanBeLoaded() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.plugins().add("com.example", "test-plugin", (plugin) -> plugin.extensions());
|
||||
assertThat(build.plugins().values()).hasSize(1);
|
||||
build.plugins().values().findFirst().ifPresent((testPlugin) -> assertThat(testPlugin.isExtensions()).isTrue());
|
||||
build.plugins().add("com.example", "test-plugin", MavenPlugin::extensions);
|
||||
assertThat(build.plugins().values())
|
||||
.hasOnlyOneElementSatisfying((testPlugin) -> assertThat(testPlugin.isExtensions()).isTrue());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ class MavenBuildWriterTests {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.plugins().add("com.example.demo", "demo-plugin", (plugin) -> plugin.extensions());
|
||||
build.plugins().add("com.example.demo", "demo-plugin", MavenPlugin::extensions);
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert plugin = pom.nodeAtPath("/project/build/plugins/plugin");
|
||||
assertThat(plugin).textAtPath("groupId").isEqualTo("com.example.demo");
|
||||
|
||||
@@ -24,15 +24,15 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* Tests for {@link MavenPluginContainer}.
|
||||
*
|
||||
* @author HaiTao Zhang
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class MavenPluginContainerTests {
|
||||
|
||||
@Test
|
||||
void addMavenPlugin() {
|
||||
void addPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(plugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(plugin.getVersion()).isNull();
|
||||
@@ -40,14 +40,13 @@ public class MavenPluginContainerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void addMavenPluginWithConsumer() {
|
||||
void addPluginWithConsumer() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin", (plugin) -> {
|
||||
plugin.setVersion("1.0");
|
||||
plugin.execution("first", (first) -> first.goal("run-this"));
|
||||
});
|
||||
assertThat(pluginContainer.values()).hasSize(1);
|
||||
pluginContainer.values().findFirst().ifPresent((plugin) -> {
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(plugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(plugin.getVersion()).isEqualTo("1.0");
|
||||
@@ -57,4 +56,65 @@ public class MavenPluginContainerTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void addPluginSeveralTimeReuseConfiguration() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin", (plugin) -> {
|
||||
assertThat(plugin.getVersion()).isNull();
|
||||
plugin.setVersion("1.0");
|
||||
});
|
||||
pluginContainer.add("com.example", "test-plugin", (plugin) -> {
|
||||
assertThat(plugin.getVersion()).isEqualTo("1.0");
|
||||
plugin.setVersion("2.0");
|
||||
});
|
||||
assertThat(pluginContainer.values()).hasOnlyOneElementSatisfying((plugin) -> {
|
||||
assertThat(plugin.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(plugin.getArtifactId()).isEqualTo("test-plugin");
|
||||
assertThat(plugin.getVersion()).isEqualTo("2.0");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void isEmptyWithEmptyContainer() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
assertThat(pluginContainer.isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isEmptyWithRegisteredPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.isEmpty()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasPluginWithMatchingPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.has("com.example", "test-plugin")).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void hasPluginWithNonMatchingPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.has("com.example", "another-plugin")).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void removeWithMatchingPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.remove("com.example", "test-plugin")).isTrue();
|
||||
assertThat(pluginContainer.isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void removeWithNonMatchingPlugin() {
|
||||
MavenPluginContainer pluginContainer = new MavenPluginContainer();
|
||||
pluginContainer.add("com.example", "test-plugin");
|
||||
assertThat(pluginContainer.remove("com.example", "another-plugin")).isFalse();
|
||||
assertThat(pluginContainer.isEmpty()).isFalse();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,13 +57,11 @@ class MavenPluginTests {
|
||||
@SuppressWarnings("unchecked")
|
||||
void configurationParameterWithNestedValuesCanBeCustomized() {
|
||||
MavenPlugin plugin = new MavenPlugin("com.example", "test-plugin");
|
||||
plugin.configuration(
|
||||
(configuration) -> configuration.configure("plugins", (items) -> items.add("item", "one")));
|
||||
plugin.configuration(
|
||||
(configuration) -> configuration.configure("plugins", (items) -> items.add("item", "two")));
|
||||
plugin.configuration((configuration) -> configuration.configure("items", (items) -> items.add("item", "one")));
|
||||
plugin.configuration((configuration) -> configuration.configure("items", (items) -> items.add("item", "two")));
|
||||
assertThat(plugin.getConfiguration().getSettings()).hasSize(1);
|
||||
Setting setting = plugin.getConfiguration().getSettings().get(0);
|
||||
assertThat(setting.getName()).isEqualTo("plugins");
|
||||
assertThat(setting.getName()).isEqualTo("items");
|
||||
assertThat(setting.getValue()).isInstanceOf(List.class);
|
||||
List<Setting> values = (List<Setting>) setting.getValue();
|
||||
assertThat(values.stream().map(Setting::getName)).containsExactly("item", "item");
|
||||
@@ -74,13 +72,13 @@ class MavenPluginTests {
|
||||
@SuppressWarnings("unchecked")
|
||||
void configurationParameterWithSeveralLevelOfNestedValuesCanBeCustomized() {
|
||||
MavenPlugin plugin = new MavenPlugin("com.example", "test-plugin");
|
||||
plugin.configuration((configuration) -> configuration.configure("plugins",
|
||||
plugin.configuration((configuration) -> configuration.configure("items",
|
||||
(items) -> items.configure("item", (subItems) -> subItems.add("subItem", "one"))));
|
||||
plugin.configuration((configuration) -> configuration.configure("plugins", (items) -> items.configure("item",
|
||||
plugin.configuration((configuration) -> configuration.configure("items", (items) -> items.configure("item",
|
||||
(subItems) -> subItems.add("subItem", "two").add("subItem", "three"))));
|
||||
assertThat(plugin.getConfiguration().getSettings()).hasSize(1);
|
||||
Setting setting = plugin.getConfiguration().getSettings().get(0);
|
||||
assertThat(setting.getName()).isEqualTo("plugins");
|
||||
assertThat(setting.getName()).isEqualTo("items");
|
||||
assertThat(setting.getValue()).isInstanceOf(List.class);
|
||||
List<Setting> items = (List<Setting>) setting.getValue();
|
||||
assertThat(items).hasSize(1);
|
||||
|
||||
Reference in New Issue
Block a user