mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-15 23:13:30 +08:00
Move general build settings to immutable class
This commit moves the global build settings to an immutable BuildSettings abstraction. See gh-996
This commit is contained in:
parent
7d47786a8b
commit
3f6c98173b
@ -38,9 +38,8 @@ public class SimpleBuildCustomizer implements BuildCustomizer<Build> {
|
||||
|
||||
@Override
|
||||
public void customize(Build build) {
|
||||
build.setGroup(this.description.getGroupId());
|
||||
build.setArtifact(this.description.getArtifactId());
|
||||
build.setVersion(this.description.getVersion());
|
||||
build.settings().group(this.description.getGroupId()).artifact(this.description.getArtifactId())
|
||||
.version(this.description.getVersion());
|
||||
this.description.getRequestedDependencies()
|
||||
.forEach((id, dependency) -> build.dependencies().add(id, dependency));
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class Gradle3SettingsGradleProjectContributor implements ProjectContributor {
|
||||
public void contribute(Path projectRoot) throws IOException {
|
||||
Path file = Files.createFile(projectRoot.resolve("settings.gradle"));
|
||||
try (PrintWriter writer = new PrintWriter(Files.newOutputStream(file))) {
|
||||
writer.println("rootProject.name = '" + this.build.getArtifact() + "'");
|
||||
writer.println("rootProject.name = '" + this.build.getSettings().getArtifact() + "'");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ public class GradleProjectGenerationConfiguration {
|
||||
|
||||
@Bean
|
||||
public BuildCustomizer<GradleBuild> defaultGradleBuildCustomizer(ProjectDescription description) {
|
||||
return (build) -> build.setSourceCompatibility(description.getLanguage().jvmVersion());
|
||||
return (build) -> build.settings().sourceCompatibility(description.getLanguage().jvmVersion());
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
@ -43,8 +43,7 @@ public class DefaultMavenBuildCustomizer implements BuildCustomizer<MavenBuild>
|
||||
|
||||
@Override
|
||||
public void customize(MavenBuild build) {
|
||||
build.setName(this.description.getName());
|
||||
build.setDescription(this.description.getDescription());
|
||||
build.settings().name(this.description.getName()).description(this.description.getDescription());
|
||||
build.setProperty("java.version", this.description.getLanguage().jvmVersion());
|
||||
build.plugins().add("org.springframework.boot", "spring-boot-maven-plugin");
|
||||
|
||||
@ -64,7 +63,7 @@ public class DefaultMavenBuildCustomizer implements BuildCustomizer<MavenBuild>
|
||||
build.setProperty("project.build.sourceEncoding", "UTF-8");
|
||||
build.setProperty("project.reporting.outputEncoding", "UTF-8");
|
||||
}
|
||||
build.parent(parentPom.getGroupId(), parentPom.getArtifactId(), parentPom.getVersion());
|
||||
build.settings().parent(parentPom.getGroupId(), parentPom.getArtifactId(), parentPom.getVersion());
|
||||
}
|
||||
|
||||
private boolean hasBom(MavenBuild build, BillOfMaterials bom) {
|
||||
|
@ -72,7 +72,7 @@ public class MavenProjectGenerationConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnPackaging(WarPackaging.ID)
|
||||
public BuildCustomizer<MavenBuild> mavenWarPackagingConfigurer() {
|
||||
return (build) -> build.setPackaging("war");
|
||||
return (build) -> build.settings().packaging("war");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -39,8 +39,8 @@ class KotlinMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
|
||||
@Override
|
||||
public void customize(MavenBuild build) {
|
||||
build.setProperty("kotlin.version", this.settings.getVersion());
|
||||
build.setSourceDirectory("${project.basedir}/src/main/kotlin");
|
||||
build.setTestSourceDirectory("${project.basedir}/src/test/kotlin");
|
||||
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.configuration((configuration) -> {
|
||||
configuration.configure("args",
|
||||
|
@ -36,8 +36,8 @@ class KotlinMavenFullBuildCustomizer implements BuildCustomizer<MavenBuild> {
|
||||
@Override
|
||||
public void customize(MavenBuild build) {
|
||||
build.setProperty("kotlin.version", this.settings.getVersion());
|
||||
build.setSourceDirectory("${project.basedir}/src/main/kotlin");
|
||||
build.setTestSourceDirectory("${project.basedir}/src/test/kotlin");
|
||||
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.setVersion("${kotlin.version}");
|
||||
kotlinMavenPlugin.configuration((configuration) -> {
|
||||
|
@ -40,8 +40,8 @@ class SimpleBuildCustomizerTests {
|
||||
description.setGroupId("com.example.acme");
|
||||
description.setArtifactId("my-test-project");
|
||||
MavenBuild build = customizeBuild(description);
|
||||
assertThat(build.getGroup()).isEqualTo("com.example.acme");
|
||||
assertThat(build.getArtifact()).isEqualTo("my-test-project");
|
||||
assertThat(build.getSettings().getGroup()).isEqualTo("com.example.acme");
|
||||
assertThat(build.getSettings().getArtifact()).isEqualTo("my-test-project");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -49,7 +49,7 @@ class SimpleBuildCustomizerTests {
|
||||
MutableProjectDescription description = initializeDescription();
|
||||
description.setVersion("1.5.6.RELEASE");
|
||||
MavenBuild build = customizeBuild(description);
|
||||
assertThat(build.getVersion()).isEqualTo("1.5.6.RELEASE");
|
||||
assertThat(build.getSettings().getVersion()).isEqualTo("1.5.6.RELEASE");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -53,8 +53,7 @@ class GradleBuildProjectContributorTests {
|
||||
@Test
|
||||
void groovyDslGradleBuildIsContributedToProject() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example");
|
||||
build.setVersion("1.0.0-SNAPSHOT");
|
||||
build.settings().group("com.example").version("1.0.0-SNAPSHOT");
|
||||
build.buildscript((buildscript) -> buildscript.ext("someVersion", "'1.2.3'"));
|
||||
List<String> lines = generateBuild(
|
||||
groovyDslGradleBuildProjectContributor(build, IndentingWriterFactory.withDefaultSettings()));
|
||||
@ -84,8 +83,7 @@ class GradleBuildProjectContributorTests {
|
||||
@Test
|
||||
void kotlinDslGradleBuildIsContributedToProject() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example");
|
||||
build.setVersion("1.0.0-SNAPSHOT");
|
||||
build.settings().group("com.example").version("1.0.0-SNAPSHOT");
|
||||
List<String> lines = generateBuild(
|
||||
kotlinDslGradleBuildProjectContributor(build, IndentingWriterFactory.withDefaultSettings()));
|
||||
assertThat(lines).containsSequence("group = \"com.example\"", "version = \"1.0.0-SNAPSHOT\"");
|
||||
|
@ -44,8 +44,8 @@ class DefaultMavenBuildCustomizerTests {
|
||||
description.setName("my-demo");
|
||||
description.setDescription("Demonstration project");
|
||||
MavenBuild build = customizeBuild(metadata, description);
|
||||
assertThat(build.getName()).isEqualTo("my-demo");
|
||||
assertThat(build.getDescription()).isEqualTo("Demonstration project");
|
||||
assertThat(build.getSettings().getName()).isEqualTo("my-demo");
|
||||
assertThat(build.getSettings().getDescription()).isEqualTo("Demonstration project");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -72,7 +72,7 @@ class DefaultMavenBuildCustomizerTests {
|
||||
void customizeWhenNoParentShouldUseSpringBootParent() {
|
||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build();
|
||||
MavenBuild build = customizeBuild(metadata);
|
||||
MavenParent parent = build.getParent();
|
||||
MavenParent parent = build.getSettings().getParent();
|
||||
assertThat(parent.getGroupId()).isEqualTo("org.springframework.boot");
|
||||
assertThat(parent.getArtifactId()).isEqualTo("spring-boot-starter-parent");
|
||||
assertThat(parent.getVersion()).isEqualTo("2.0.0");
|
||||
@ -83,7 +83,7 @@ class DefaultMavenBuildCustomizerTests {
|
||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
||||
.setMavenParent("com.foo", "foo-parent", "1.0.0-SNAPSHOT", true).build();
|
||||
MavenBuild build = customizeBuild(metadata);
|
||||
MavenParent parent = build.getParent();
|
||||
MavenParent parent = build.getSettings().getParent();
|
||||
assertThat(parent.getGroupId()).isEqualTo("com.foo");
|
||||
assertThat(parent.getArtifactId()).isEqualTo("foo-parent");
|
||||
assertThat(parent.getVersion()).isEqualTo("1.0.0-SNAPSHOT");
|
||||
|
@ -49,9 +49,8 @@ class MavenBuildProjectContributorTests {
|
||||
@Test
|
||||
void pomIsContributedToProject() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.parent("org.springframework.boot", "spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
build.settings().coordinates("com.example.demo", "demo").parent("org.springframework.boot",
|
||||
"spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
List<String> lines = generatePom(build);
|
||||
assertThat(lines).containsSequence(" <parent>", " <groupId>org.springframework.boot</groupId>",
|
||||
" <artifactId>spring-boot-starter-parent</artifactId>",
|
||||
@ -63,9 +62,8 @@ class MavenBuildProjectContributorTests {
|
||||
IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory.create(new SimpleIndentStrategy(" "),
|
||||
(factory) -> factory.indentingStrategy("maven", new SimpleIndentStrategy("\t")));
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.parent("org.springframework.boot", "spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
build.settings().coordinates("com.example.demo", "demo").parent("org.springframework.boot",
|
||||
"spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
List<String> lines = generatePom(build, indentingWriterFactory);
|
||||
assertThat(lines).containsSequence("\t<parent>", "\t\t<groupId>org.springframework.boot</groupId>",
|
||||
"\t\t<artifactId>spring-boot-starter-parent</artifactId>", "\t\t<version>2.1.0.RELEASE</version>");
|
||||
|
@ -46,8 +46,8 @@ class KotlinMavenBuildCustomizerTests {
|
||||
void buildSourceDirectoriesAreConfigured() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new KotlinMavenBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.getSourceDirectory()).isEqualTo("${project.basedir}/src/main/kotlin");
|
||||
assertThat(build.getTestSourceDirectory()).isEqualTo("${project.basedir}/src/test/kotlin");
|
||||
assertThat(build.getSettings().getSourceDirectory()).isEqualTo("${project.basedir}/src/main/kotlin");
|
||||
assertThat(build.getSettings().getTestSourceDirectory()).isEqualTo("${project.basedir}/src/test/kotlin");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -44,8 +44,8 @@ class KotlinMavenFullBuildCustomizerTests {
|
||||
void buildSourceDirectoriesAreConfigured() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
new KotlinMavenFullBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.getSourceDirectory()).isEqualTo("${project.basedir}/src/main/kotlin");
|
||||
assertThat(build.getTestSourceDirectory()).isEqualTo("${project.basedir}/src/test/kotlin");
|
||||
assertThat(build.getSettings().getSourceDirectory()).isEqualTo("${project.basedir}/src/main/kotlin");
|
||||
assertThat(build.getSettings().getTestSourceDirectory()).isEqualTo("${project.basedir}/src/test/kotlin");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -30,12 +30,6 @@ import io.spring.initializr.generator.version.VersionProperty;
|
||||
*/
|
||||
public abstract class Build {
|
||||
|
||||
private String group;
|
||||
|
||||
private String artifact;
|
||||
|
||||
private String version = "0.0.1-SNAPSHOT";
|
||||
|
||||
private final Map<VersionProperty, String> versionProperties = new TreeMap<>();
|
||||
|
||||
private final DependencyContainer dependencies;
|
||||
@ -63,36 +57,16 @@ public abstract class Build {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the identifier of the group for the project.
|
||||
* @return the groupId
|
||||
* Return a builder to configure the general settings of this build.
|
||||
* @return a builder for {@link BuildSettings}.
|
||||
*/
|
||||
public String getGroup() {
|
||||
return this.group;
|
||||
}
|
||||
|
||||
public void setGroup(String group) {
|
||||
this.group = group;
|
||||
}
|
||||
public abstract BuildSettings.Builder<?> settings();
|
||||
|
||||
/**
|
||||
* Return the identifier of the project.
|
||||
* @return the artifactId
|
||||
* Return the settings of this build.
|
||||
* @return a {@link BuildSettings}
|
||||
*/
|
||||
public String getArtifact() {
|
||||
return this.artifact;
|
||||
}
|
||||
|
||||
public void setArtifact(String artifact) {
|
||||
this.artifact = artifact;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return this.version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
public abstract BuildSettings getSettings();
|
||||
|
||||
public void addVersionProperty(VersionProperty versionProperty, String version) {
|
||||
this.versionProperties.put(versionProperty, version);
|
||||
|
@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.spring.initializr.generator.buildsystem;
|
||||
|
||||
/**
|
||||
* General build settings.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class BuildSettings {
|
||||
|
||||
private final String group;
|
||||
|
||||
private final String artifact;
|
||||
|
||||
private final String version;
|
||||
|
||||
protected BuildSettings(Builder<?> builder) {
|
||||
this.group = builder.group;
|
||||
this.artifact = builder.artifact;
|
||||
this.version = builder.version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the identifier of the group for the project.
|
||||
* @return the group identifier or {@code null}
|
||||
*/
|
||||
public String getGroup() {
|
||||
return this.group;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the identifier of the project.
|
||||
* @return the project identifier or {@code null}
|
||||
*/
|
||||
public String getArtifact() {
|
||||
return this.artifact;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the version of the project.
|
||||
* @return the project version or {@code null}
|
||||
*/
|
||||
public String getVersion() {
|
||||
return this.version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder for build settings.
|
||||
*
|
||||
* @param <B> builder type
|
||||
*/
|
||||
public abstract static class Builder<B extends Builder> {
|
||||
|
||||
private String group;
|
||||
|
||||
private String artifact;
|
||||
|
||||
private String version = "0.0.1-SNAPSHOT";
|
||||
|
||||
protected Builder() {
|
||||
}
|
||||
|
||||
public B group(String group) {
|
||||
this.group = group;
|
||||
return self();
|
||||
}
|
||||
|
||||
public B artifact(String artifact) {
|
||||
this.artifact = artifact;
|
||||
return self();
|
||||
}
|
||||
|
||||
public B version(String version) {
|
||||
this.version = version;
|
||||
return self();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
protected B self() {
|
||||
return (B) this;
|
||||
}
|
||||
|
||||
public BuildSettings build() {
|
||||
return new BuildSettings(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -30,6 +30,7 @@ import java.util.function.Consumer;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.BuildItemResolver;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSettings.Builder;
|
||||
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
@ -42,7 +43,7 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
public class GradleBuild extends Build {
|
||||
|
||||
private String sourceCompatibility;
|
||||
private final GradleBuildSettings.Builder settings = new Builder();
|
||||
|
||||
private final Map<String, String> ext = new TreeMap<>();
|
||||
|
||||
@ -68,12 +69,14 @@ public class GradleBuild extends Build {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public void setSourceCompatibility(String sourceCompatibility) {
|
||||
this.sourceCompatibility = sourceCompatibility;
|
||||
@Override
|
||||
public GradleBuildSettings.Builder settings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
public String getSourceCompatibility() {
|
||||
return this.sourceCompatibility;
|
||||
@Override
|
||||
public GradleBuildSettings getSettings() {
|
||||
return this.settings.build();
|
||||
}
|
||||
|
||||
public GradleBuild ext(String key, String value) {
|
||||
|
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BuildSettings;
|
||||
|
||||
/**
|
||||
* Gradle {@link BuildSettings}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class GradleBuildSettings extends BuildSettings {
|
||||
|
||||
private final String sourceCompatibility;
|
||||
|
||||
protected GradleBuildSettings(Builder builder) {
|
||||
super(builder);
|
||||
this.sourceCompatibility = builder.sourceCompatibility;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the java version compatibility to use when compiling Java source.
|
||||
* @return the java version to use for source.
|
||||
*/
|
||||
public String getSourceCompatibility() {
|
||||
return this.sourceCompatibility;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder for {@link GradleBuildSettings}.
|
||||
*/
|
||||
public static class Builder extends BuildSettings.Builder<Builder> {
|
||||
|
||||
private String sourceCompatibility;
|
||||
|
||||
public Builder sourceCompatibility(String sourceCompatibility) {
|
||||
this.sourceCompatibility = sourceCompatibility;
|
||||
return self();
|
||||
}
|
||||
|
||||
public GradleBuildSettings build() {
|
||||
return new GradleBuildSettings(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -54,12 +54,13 @@ import io.spring.initializr.generator.version.VersionProperty;
|
||||
public abstract class GradleBuildWriter {
|
||||
|
||||
public final void writeTo(IndentingWriter writer, GradleBuild build) throws IOException {
|
||||
GradleBuildSettings settings = build.getSettings();
|
||||
writeImports(writer, build);
|
||||
writeBuildscript(writer, build);
|
||||
writePlugins(writer, build);
|
||||
writeProperty(writer, "group", build.getGroup());
|
||||
writeProperty(writer, "version", build.getVersion());
|
||||
writeJavaSourceCompatibility(writer, build);
|
||||
writeProperty(writer, "group", settings.getGroup());
|
||||
writeProperty(writer, "version", settings.getVersion());
|
||||
writeJavaSourceCompatibility(writer, settings);
|
||||
writer.println();
|
||||
writeConfigurations(writer, build);
|
||||
writeRepositories(writer, build);
|
||||
@ -87,7 +88,7 @@ public abstract class GradleBuildWriter {
|
||||
.map(StandardGradlePlugin.class::cast).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
protected abstract void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuild build);
|
||||
protected abstract void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings);
|
||||
|
||||
protected abstract void writeConfigurations(IndentingWriter writer, GradleBuild build);
|
||||
|
||||
|
@ -33,7 +33,7 @@ public abstract class GradleSettingsWriter {
|
||||
|
||||
public final void writeTo(IndentingWriter writer, GradleBuild build) throws IOException {
|
||||
writePluginManagement(writer, build);
|
||||
writer.println("rootProject.name = " + wrapWithQuotes(build.getArtifact()));
|
||||
writer.println("rootProject.name = " + wrapWithQuotes(build.getSettings().getArtifact()));
|
||||
}
|
||||
|
||||
private void writePluginManagement(IndentingWriter writer, GradleBuild build) {
|
||||
|
@ -88,8 +88,8 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuild build) {
|
||||
writeProperty(writer, "sourceCompatibility", build.getSourceCompatibility());
|
||||
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings) {
|
||||
writeProperty(writer, "sourceCompatibility", settings.getSourceCompatibility());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -98,9 +98,9 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuild build) {
|
||||
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings) {
|
||||
writer.println("java.sourceCompatibility = JavaVersion."
|
||||
+ sourceCompatibilitiesToJavaVersion.get(build.getSourceCompatibility()));
|
||||
+ sourceCompatibilitiesToJavaVersion.get(settings.getSourceCompatibility()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -22,6 +22,7 @@ import java.util.TreeMap;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.BuildItemResolver;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSettings.Builder;
|
||||
|
||||
/**
|
||||
* Maven build for a project.
|
||||
@ -31,15 +32,7 @@ import io.spring.initializr.generator.buildsystem.BuildItemResolver;
|
||||
*/
|
||||
public class MavenBuild extends Build {
|
||||
|
||||
private MavenParent parent;
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
private String sourceDirectory;
|
||||
|
||||
private String testSourceDirectory;
|
||||
private final MavenBuildSettings.Builder settings = new Builder();
|
||||
|
||||
private final Map<String, String> properties = new TreeMap<>();
|
||||
|
||||
@ -49,8 +42,6 @@ public class MavenBuild extends Build {
|
||||
|
||||
private MavenPluginContainer plugins = new MavenPluginContainer();
|
||||
|
||||
private String packaging;
|
||||
|
||||
public MavenBuild(BuildItemResolver buildItemResolver) {
|
||||
super(buildItemResolver);
|
||||
}
|
||||
@ -59,29 +50,14 @@ public class MavenBuild extends Build {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public MavenParent parent(String groupId, String artifactId, String version) {
|
||||
this.parent = new MavenParent(groupId, artifactId, version);
|
||||
return this.parent;
|
||||
@Override
|
||||
public MavenBuildSettings.Builder settings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
public MavenParent getParent() {
|
||||
return this.parent;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
@Override
|
||||
public MavenBuildSettings getSettings() {
|
||||
return this.settings.build();
|
||||
}
|
||||
|
||||
public void setProperty(String key, String value) {
|
||||
@ -92,22 +68,6 @@ public class MavenBuild extends Build {
|
||||
return Collections.unmodifiableMap(this.properties);
|
||||
}
|
||||
|
||||
public String getSourceDirectory() {
|
||||
return this.sourceDirectory;
|
||||
}
|
||||
|
||||
public void setSourceDirectory(String sourceDirectory) {
|
||||
this.sourceDirectory = sourceDirectory;
|
||||
}
|
||||
|
||||
public String getTestSourceDirectory() {
|
||||
return this.testSourceDirectory;
|
||||
}
|
||||
|
||||
public void setTestSourceDirectory(String testSourceDirectory) {
|
||||
this.testSourceDirectory = testSourceDirectory;
|
||||
}
|
||||
|
||||
public MavenResourceContainer resources() {
|
||||
return this.resources;
|
||||
}
|
||||
@ -120,12 +80,4 @@ public class MavenBuild extends Build {
|
||||
return this.plugins;
|
||||
}
|
||||
|
||||
public void setPackaging(String packaging) {
|
||||
this.packaging = packaging;
|
||||
}
|
||||
|
||||
public String getPackaging() {
|
||||
return this.packaging;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.spring.initializr.generator.buildsystem.maven;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BuildSettings;
|
||||
|
||||
/**
|
||||
* Maven {@link BuildSettings}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class MavenBuildSettings extends BuildSettings {
|
||||
|
||||
private final MavenParent parent;
|
||||
|
||||
private final String packaging;
|
||||
|
||||
private final String name;
|
||||
|
||||
private final String description;
|
||||
|
||||
private final String sourceDirectory;
|
||||
|
||||
private final String testSourceDirectory;
|
||||
|
||||
protected MavenBuildSettings(Builder builder) {
|
||||
super(builder);
|
||||
this.parent = builder.parent;
|
||||
this.packaging = builder.packaging;
|
||||
this.name = builder.name;
|
||||
this.description = builder.description;
|
||||
this.sourceDirectory = builder.sourceDirectory;
|
||||
this.testSourceDirectory = builder.testSourceDirectory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the {@link MavenParent} to use or {@code null} if this project has no
|
||||
* parent.
|
||||
* @return the parent pom or {@code null}
|
||||
*/
|
||||
public MavenParent getParent() {
|
||||
return this.parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the {@code packaging} to use or {@code null} to use the default {@code jar}
|
||||
* packaging.
|
||||
* @return the packaging to use
|
||||
*/
|
||||
public String getPackaging() {
|
||||
return this.packaging;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a simple name for the project.
|
||||
* @return the name of the project or {@code null}
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a human readable description of the project.
|
||||
* @return the description of the project or {@code null}
|
||||
*/
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the location of main source code. Can use Maven properties such as
|
||||
* {@code ${basedir}}.
|
||||
* @return the location of main source code or {@code null} to use the default
|
||||
*/
|
||||
public String getSourceDirectory() {
|
||||
return this.sourceDirectory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the location of test source code. Can use Maven properties such as
|
||||
* {@code ${basedir}}.
|
||||
* @return the location of test source code or {@code null} to use the default
|
||||
*/
|
||||
public String getTestSourceDirectory() {
|
||||
return this.testSourceDirectory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder for a Maven dependency.
|
||||
*
|
||||
* @see MavenDependency#withCoordinates(String, String)
|
||||
*/
|
||||
public static class Builder extends BuildSettings.Builder<Builder> {
|
||||
|
||||
private MavenParent parent;
|
||||
|
||||
private String packaging;
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
private String sourceDirectory;
|
||||
|
||||
private String testSourceDirectory;
|
||||
|
||||
public Builder() {
|
||||
}
|
||||
|
||||
public Builder coordinates(String groupId, String artifactId) {
|
||||
return group(groupId).artifact(artifactId);
|
||||
}
|
||||
|
||||
public Builder parent(String groupId, String artifactId, String version) {
|
||||
this.parent = new MavenParent(groupId, artifactId, version);
|
||||
return self();
|
||||
}
|
||||
|
||||
public Builder packaging(String packaging) {
|
||||
this.packaging = packaging;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Builder name(String name) {
|
||||
this.name = name;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Builder description(String description) {
|
||||
this.description = description;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Builder sourceDirectory(String sourceDirectory) {
|
||||
this.sourceDirectory = sourceDirectory;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Builder testSourceDirectory(String testSourceDirectory) {
|
||||
this.testSourceDirectory = testSourceDirectory;
|
||||
return self();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MavenBuildSettings build() {
|
||||
return new MavenBuildSettings(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -49,11 +49,12 @@ import io.spring.initializr.generator.version.VersionReference;
|
||||
public class MavenBuildWriter {
|
||||
|
||||
public void writeTo(IndentingWriter writer, MavenBuild build) throws IOException {
|
||||
MavenBuildSettings settings = build.getSettings();
|
||||
writeProject(writer, () -> {
|
||||
writeParent(writer, build);
|
||||
writeProjectCoordinates(writer, build);
|
||||
writePackaging(writer, build);
|
||||
writeProjectName(writer, build);
|
||||
writeProjectCoordinates(writer, settings);
|
||||
writePackaging(writer, settings);
|
||||
writeProjectName(writer, settings);
|
||||
writeProperties(writer, build);
|
||||
writeDependencies(writer, build);
|
||||
writeDependencyManagement(writer, build);
|
||||
@ -77,7 +78,7 @@ public class MavenBuildWriter {
|
||||
}
|
||||
|
||||
private void writeParent(IndentingWriter writer, MavenBuild build) {
|
||||
MavenParent parent = build.getParent();
|
||||
MavenParent parent = build.getSettings().getParent();
|
||||
if (parent == null) {
|
||||
return;
|
||||
}
|
||||
@ -91,22 +92,22 @@ public class MavenBuildWriter {
|
||||
writer.println("</parent>");
|
||||
}
|
||||
|
||||
private void writeProjectCoordinates(IndentingWriter writer, MavenBuild build) {
|
||||
writeSingleElement(writer, "groupId", build.getGroup());
|
||||
writeSingleElement(writer, "artifactId", build.getArtifact());
|
||||
writeSingleElement(writer, "version", build.getVersion());
|
||||
private void writeProjectCoordinates(IndentingWriter writer, MavenBuildSettings settings) {
|
||||
writeSingleElement(writer, "groupId", settings.getGroup());
|
||||
writeSingleElement(writer, "artifactId", settings.getArtifact());
|
||||
writeSingleElement(writer, "version", settings.getVersion());
|
||||
}
|
||||
|
||||
private void writePackaging(IndentingWriter writer, MavenBuild build) {
|
||||
String packaging = build.getPackaging();
|
||||
private void writePackaging(IndentingWriter writer, MavenBuildSettings settings) {
|
||||
String packaging = settings.getPackaging();
|
||||
if (!"jar".equals(packaging)) {
|
||||
writeSingleElement(writer, "packaging", packaging);
|
||||
}
|
||||
}
|
||||
|
||||
private void writeProjectName(IndentingWriter writer, MavenBuild build) {
|
||||
writeSingleElement(writer, "name", build.getName());
|
||||
writeSingleElement(writer, "description", build.getDescription());
|
||||
private void writeProjectName(IndentingWriter writer, MavenBuildSettings settings) {
|
||||
writeSingleElement(writer, "name", settings.getName());
|
||||
writeSingleElement(writer, "description", settings.getDescription());
|
||||
}
|
||||
|
||||
private void writeProperties(IndentingWriter writer, MavenBuild build) {
|
||||
@ -240,14 +241,15 @@ public class MavenBuildWriter {
|
||||
}
|
||||
|
||||
private void writeBuild(IndentingWriter writer, MavenBuild build) {
|
||||
if (build.getSourceDirectory() == null && build.getTestSourceDirectory() == null && build.resources().isEmpty()
|
||||
&& build.testResources().isEmpty() && build.plugins().isEmpty()) {
|
||||
MavenBuildSettings settings = build.getSettings();
|
||||
if (settings.getSourceDirectory() == null && settings.getTestSourceDirectory() == null
|
||||
&& build.resources().isEmpty() && build.testResources().isEmpty() && build.plugins().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
writer.println();
|
||||
writeElement(writer, "build", () -> {
|
||||
writeSingleElement(writer, "sourceDirectory", build.getSourceDirectory());
|
||||
writeSingleElement(writer, "testSourceDirectory", build.getTestSourceDirectory());
|
||||
writeSingleElement(writer, "sourceDirectory", settings.getSourceDirectory());
|
||||
writeSingleElement(writer, "testSourceDirectory", settings.getTestSourceDirectory());
|
||||
writeResources(writer, build);
|
||||
writePlugins(writer, build);
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
package io.spring.initializr.generator.buildsystem;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BuildSettings.Builder;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -76,10 +77,31 @@ class BuildTests {
|
||||
|
||||
private static class TestBuild extends Build {
|
||||
|
||||
private final TestBuildSettingsBuilder settings = new TestBuildSettingsBuilder();
|
||||
|
||||
TestBuild(BuildItemResolver buildItemResolver) {
|
||||
super(buildItemResolver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder<?> settings() {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BuildSettings getSettings() {
|
||||
return this.settings.build();
|
||||
}
|
||||
|
||||
private static class TestBuildSettingsBuilder extends BuildSettings.Builder<TestBuildSettingsBuilder> {
|
||||
|
||||
@Override
|
||||
public BuildSettings build() {
|
||||
return new BuildSettings(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -43,8 +43,7 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithCoordinates() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example");
|
||||
build.setVersion("1.0.1-SNAPSHOT");
|
||||
build.settings().group("com.example").version("1.0.1-SNAPSHOT");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("group = 'com.example'", "version = '1.0.1-SNAPSHOT'");
|
||||
}
|
||||
@ -52,7 +51,7 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setSourceCompatibility("11");
|
||||
build.settings().sourceCompatibility("11");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("sourceCompatibility = '11'");
|
||||
}
|
||||
@ -206,8 +205,6 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithExt() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.ext("java.version", "'1.8'").ext("alpha", "file(\"build/example\")");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence(" set('alpha', file(\"build/example\"))",
|
||||
@ -251,8 +248,6 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithExtAndVersionProperties() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.addInternalVersionProperty("test-version", "1.0");
|
||||
build.addExternalVersionProperty("alpha-version", "0.1");
|
||||
build.ext("myProperty", "'42'");
|
||||
@ -424,7 +419,7 @@ class GroovyDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithCustomVersion() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setVersion("1.2.4.RELEASE");
|
||||
build.settings().version("1.2.4.RELEASE");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("version = '1.2.4.RELEASE'");
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ class GroovyDslGradleSettingsWriterTests {
|
||||
@Test
|
||||
void artifactIdShouldBeUsedAsTheRootProjectName() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setArtifact("my-application");
|
||||
build.settings().artifact("my-application");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("rootProject.name = 'my-application'");
|
||||
}
|
||||
|
@ -42,8 +42,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithCoordinates() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example");
|
||||
build.setVersion("1.0.1-SNAPSHOT");
|
||||
build.settings().group("com.example").version("1.0.1-SNAPSHOT");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("group = \"com.example\"", "version = \"1.0.1-SNAPSHOT\"");
|
||||
}
|
||||
@ -51,7 +50,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility11() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setSourceCompatibility("11");
|
||||
build.settings().sourceCompatibility("11");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("java.sourceCompatibility = JavaVersion.VERSION_11");
|
||||
}
|
||||
@ -59,7 +58,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility1Dot8() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setSourceCompatibility("1.8");
|
||||
build.settings().sourceCompatibility("1.8");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("java.sourceCompatibility = JavaVersion.VERSION_1_8");
|
||||
}
|
||||
@ -211,8 +210,6 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithExt() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.ext("java.version", "\"1.8\"").ext("alpha", "file(\"build/example\")");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("extra[\"alpha\"] = file(\"build/example\")",
|
||||
@ -256,8 +253,6 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithExtAndVersionProperties() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.addInternalVersionProperty("test-version", "1.0");
|
||||
build.addExternalVersionProperty("alpha-version", "0.1");
|
||||
build.ext("myProperty", "42");
|
||||
@ -432,7 +427,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithCustomVersion() throws IOException {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setVersion("1.2.4.RELEASE");
|
||||
build.settings().version("1.2.4.RELEASE");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("version = \"1.2.4.RELEASE\"");
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ class KotlinDslGradleSettingsWriterTests {
|
||||
@Test
|
||||
void artifactIdShouldBeUsedAsTheRootProjectName() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.setArtifact("my-application");
|
||||
build.settings().artifact("my-application");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("rootProject.name = \"my-application\"");
|
||||
}
|
||||
|
@ -40,9 +40,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void basicPom() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.setVersion("1.0.1-SNAPSHOT");
|
||||
build.settings().coordinates("com.example.demo", "demo").version("1.0.1-SNAPSHOT");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/modelVersion").isEqualTo("4.0.0");
|
||||
assertThat(pom).textAtPath("/project/groupId").isEqualTo("com.example.demo");
|
||||
@ -54,10 +52,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithNameAndDescription() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.setName("demo project");
|
||||
build.setDescription("A demo project");
|
||||
build.settings().coordinates("com.example.demo", "demo").name("demo project").description("A demo project");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/modelVersion").isEqualTo("4.0.0");
|
||||
assertThat(pom).textAtPath("/project/groupId").isEqualTo("com.example.demo");
|
||||
@ -71,9 +66,8 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithParent() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.parent("org.springframework.boot", "spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
build.settings().coordinates("com.example.demo", "demo").parent("org.springframework.boot",
|
||||
"spring-boot-starter-parent", "2.1.0.RELEASE");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/parent/groupId").isEqualTo("org.springframework.boot");
|
||||
assertThat(pom).textAtPath("/project/parent/artifactId").isEqualTo("spring-boot-starter-parent");
|
||||
@ -84,17 +78,14 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPackaging() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.setPackaging("war");
|
||||
build.settings().coordinates("com.example.demo", "demo").packaging("war");
|
||||
generatePom(build, (pom) -> assertThat(pom).textAtPath("/project/packaging").isEqualTo("war"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void pomWithProperties() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.setProperty("java.version", "1.8");
|
||||
build.setProperty("alpha", "a");
|
||||
generatePom(build, (pom) -> {
|
||||
@ -119,8 +110,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithAnnotationProcessorDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("annotation-processor", "org.springframework.boot",
|
||||
"spring-boot-configuration-processor", DependencyScope.ANNOTATION_PROCESSOR);
|
||||
generatePom(build, (pom) -> {
|
||||
@ -136,8 +126,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithCompileOnlyDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("foo-bar", "org.springframework.boot", "spring-boot-foo-bar",
|
||||
DependencyScope.COMPILE_ONLY);
|
||||
generatePom(build, (pom) -> {
|
||||
@ -153,8 +142,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithCompileDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("root", "org.springframework.boot", "spring-boot-starter", DependencyScope.COMPILE);
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert dependency = pom.nodeAtPath("/project/dependencies/dependency");
|
||||
@ -169,8 +157,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithNoScopeDependencyDefaultsToCompile() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter"));
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert dependency = pom.nodeAtPath("/project/dependencies/dependency");
|
||||
@ -185,8 +172,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithRuntimeDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("hikari", "com.zaxxer", "HikariCP", DependencyScope.RUNTIME);
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert dependency = pom.nodeAtPath("/project/dependencies/dependency");
|
||||
@ -201,8 +187,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithProvidedRuntimeDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("tomcat", "org.springframework.boot", "spring-boot-starter-tomcat",
|
||||
DependencyScope.PROVIDED_RUNTIME);
|
||||
generatePom(build, (pom) -> {
|
||||
@ -218,8 +203,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithTestCompileDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("test", "org.springframework.boot", "spring-boot-starter-test",
|
||||
DependencyScope.TEST_COMPILE);
|
||||
generatePom(build, (pom) -> {
|
||||
@ -235,8 +219,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithTestRuntimeDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("embed-mongo", "de.flapdoodle.embed", "de.flapdoodle.embed.mongo",
|
||||
DependencyScope.TEST_RUNTIME);
|
||||
generatePom(build, (pom) -> {
|
||||
@ -252,8 +235,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithExclusions() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("test",
|
||||
Dependency.withCoordinates("com.example", "test").scope(DependencyScope.COMPILE).exclusions(
|
||||
new Exclusion("com.example.legacy", "legacy-one"),
|
||||
@ -278,8 +260,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithOptionalDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("annotation-processor",
|
||||
MavenDependency.withCoordinates("org.springframework.boot", "spring-boot-configuration-processor")
|
||||
.scope(DependencyScope.COMPILE).optional(true));
|
||||
@ -296,8 +277,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithNonNullArtifactTypeDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter")
|
||||
.scope(DependencyScope.COMPILE).type("tar.gz"));
|
||||
generatePom(build, (pom) -> {
|
||||
@ -309,8 +289,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithBom() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.boms().add("test", "com.example", "my-project-dependencies", VersionReference.ofValue("1.0.0.RELEASE"));
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert dependency = pom.nodeAtPath("/project/dependencyManagement/dependencies/dependency");
|
||||
@ -321,8 +300,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithOrderedBoms() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.boms().add("bom1", "com.example", "my-project-dependencies", VersionReference.ofValue("1.0.0.RELEASE"),
|
||||
5);
|
||||
build.boms().add("bom2", "com.example", "root-dependencies", VersionReference.ofProperty("root.version"), 2);
|
||||
@ -379,8 +357,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPlugin() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.plugins().add("org.springframework.boot", "spring-boot-maven-plugin");
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert plugin = pom.nodeAtPath("/project/build/plugins/plugin");
|
||||
@ -394,8 +371,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPluginWithConfiguration() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin",
|
||||
(plugin) -> plugin.configuration((configuration) -> {
|
||||
configuration.configure("args", (args) -> args.add("arg", "-Xjsr305=strict"));
|
||||
@ -416,8 +392,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPluginWithExecution() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.plugins().add("org.asciidoctor", "asciidoctor-maven-plugin", (plugin) -> {
|
||||
plugin.setVersion("1.5.3");
|
||||
plugin.execution("generateProject-docs", (execution) -> {
|
||||
@ -447,8 +422,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPluginWithDependency() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.plugins().add("org.jetbrains.kotlin", "kotlin-maven-plugin",
|
||||
(plugin) -> plugin.dependency("org.jetbrains.kotlin", "kotlin-maven-allopen", "${kotlin.version}"));
|
||||
generatePom(build, (pom) -> {
|
||||
@ -465,8 +439,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPluginWithExtensions() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.plugins().add("com.example.demo", "demo-plugin", MavenPlugin::extensions);
|
||||
generatePom(build, (pom) -> {
|
||||
NodeAssert plugin = pom.nodeAtPath("/project/build/plugins/plugin");
|
||||
@ -479,16 +452,14 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithEmptyBuild() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
generatePom(build, (pom) -> assertThat(pom).textAtPath("/project/build/").isNullOrEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void pomWithMavenCentral() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.repositories().add("maven-central");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).nodeAtPath("/project/repositories").isNull();
|
||||
@ -499,8 +470,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithRepository() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.repositories().add("spring-milestones", "Spring Milestones", "https://repo.spring.io/milestone");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/repositories/repository/id").isEqualTo("spring-milestones");
|
||||
@ -515,8 +485,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithPluginRepository() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.pluginRepositories().add("spring-milestones", "Spring Milestones", "https://repo.spring.io/milestone");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/pluginRepositories/pluginRepository/id")
|
||||
@ -533,8 +502,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithSnapshotRepository() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.repositories().add("spring-snapshots", "Spring Snapshots", "https://repo.spring.io/snapshot", true);
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/repositories/repository/id").isEqualTo("spring-snapshots");
|
||||
@ -549,8 +517,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithSnapshotPluginRepository() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.settings().coordinates("com.example.demo", "demo");
|
||||
build.pluginRepositories().add("spring-snapshots", "Spring Snapshots", "https://repo.spring.io/snapshot", true);
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/pluginRepositories/pluginRepository/id").isEqualTo("spring-snapshots");
|
||||
@ -567,10 +534,8 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithCustomSourceDirectories() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setGroup("com.example.demo");
|
||||
build.setArtifact("demo");
|
||||
build.setSourceDirectory("${project.basedir}/src/main/kotlin");
|
||||
build.setTestSourceDirectory("${project.basedir}/src/test/kotlin");
|
||||
build.settings().coordinates("com.example.demo", "demo").sourceDirectory("${project.basedir}/src/main/kotlin")
|
||||
.testSourceDirectory("${project.basedir}/src/test/kotlin");
|
||||
generatePom(build, (pom) -> {
|
||||
assertThat(pom).textAtPath("/project/build/sourceDirectory")
|
||||
.isEqualTo("${project.basedir}/src/main/kotlin");
|
||||
@ -582,7 +547,7 @@ class MavenBuildWriterTests {
|
||||
@Test
|
||||
void pomWithCustomVersion() throws Exception {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.setVersion("1.2.4.RELEASE");
|
||||
build.settings().version("1.2.4.RELEASE");
|
||||
generatePom(build, (pom) -> assertThat(pom).textAtPath("/project/version").isEqualTo("1.2.4.RELEASE"));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user