diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java index faf845a2..c7144db2 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java @@ -34,6 +34,7 @@ import java.util.stream.Collectors; import io.spring.initializr.InitializrException; import io.spring.initializr.metadata.BillOfMaterials; import io.spring.initializr.metadata.Dependency; +import io.spring.initializr.metadata.InitializrConfiguration.Env.Maven; import io.spring.initializr.metadata.InitializrConfiguration.Env.Maven.ParentPom; import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadataProvider; @@ -364,14 +365,19 @@ public class ProjectGenerator { if (isMavenBuild(request)) { model.put("mavenBuild", true); - ParentPom parentPom = metadata.getConfiguration().getEnv().getMaven() - .resolveParentPom(request.getBootVersion()); + Maven maven = metadata.getConfiguration().getEnv().getMaven(); + ParentPom parentPom = maven.resolveParentPom(request.getBootVersion()); if (parentPom.isIncludeSpringBootBom() && !request.getBoms().containsKey("spring-boot")) { request.getBoms().put("spring-boot", metadata.createSpringBootBom( request.getBootVersion(), "spring-boot.version")); } - + if (!maven.isSpringBootStarterParent(parentPom)) { + request.getBuildProperties().getMaven() + .put("project.build.sourceEncoding", () -> "UTF-8"); + request.getBuildProperties().getMaven() + .put("project.reporting.outputEncoding", () -> "UTF-8"); + } model.put("mavenParentGroupId", parentPom.getGroupId()); model.put("mavenParentArtifactId", parentPom.getArtifactId()); model.put("mavenParentVersion", parentPom.getVersion()); diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java index 925eb9ef..0764e306 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java @@ -239,10 +239,6 @@ public class ProjectRequest extends BasicProjectRequest { } } else { - this.buildProperties.getMaven().put("project.build.sourceEncoding", - () -> "UTF-8"); - this.buildProperties.getMaven().put("project.reporting.outputEncoding", - () -> "UTF-8"); this.buildProperties.getVersions().put(VersionProperty.of("java.version"), this::getJavaVersion); if ("kotlin".equals(getLanguage())) { diff --git a/initializr-generator/src/main/java/io/spring/initializr/metadata/InitializrConfiguration.java b/initializr-generator/src/main/java/io/spring/initializr/metadata/InitializrConfiguration.java index 006c1a4e..5b200756 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/metadata/InitializrConfiguration.java +++ b/initializr-generator/src/main/java/io/spring/initializr/metadata/InitializrConfiguration.java @@ -495,6 +495,10 @@ public class InitializrConfiguration { */ public static class Maven { + private static final String DEFAULT_PARENT_GROUP_ID = "org.springframework.boot"; + + private static final String DEFAULT_PARENT_ARTIFACT_ID = "spring-boot-starter-parent"; + /** * Custom parent pom to use for generated projects. */ @@ -519,8 +523,20 @@ public class InitializrConfiguration { */ public ParentPom resolveParentPom(String bootVersion) { return (StringUtils.hasText(this.parent.groupId) ? this.parent - : new ParentPom("org.springframework.boot", - "spring-boot-starter-parent", bootVersion)); + : new ParentPom(DEFAULT_PARENT_GROUP_ID, + DEFAULT_PARENT_ARTIFACT_ID, bootVersion)); + } + + /** + * Check if the specified {@link ParentPom} is the default spring boot starter + * parent. + * @param parentPom the parent pom to check + * @return {@code true} if the {@code parentPom} is the spring boot starter + * parent + */ + public boolean isSpringBootStarterParent(ParentPom parentPom) { + return DEFAULT_PARENT_GROUP_ID.equals(parentPom.getGroupId()) + && DEFAULT_PARENT_ARTIFACT_ID.equals(parentPom.getArtifactId()); } /** diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java index 64247a96..ae16d606 100755 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java @@ -384,7 +384,9 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests { @Test public void defaultMavenPomHasSpringBootParent() { ProjectRequest request = createProjectRequest("web"); - generateMavenPom(request).hasSpringBootParent(request.getBootVersion()); + generateMavenPom(request).hasSpringBootParent(request.getBootVersion()) + .hasNoProperty("project.build.sourceEncoding") + .hasNoProperty("project.reporting.outputEncoding"); } @Test @@ -395,7 +397,8 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests { applyMetadata(metadata); ProjectRequest request = createProjectRequest("web"); generateMavenPom(request).hasParent("com.foo", "foo-parent", "1.0.0-SNAPSHOT") - .hasBomsCount(0); + .hasBomsCount(0).hasProperty("project.build.sourceEncoding", "UTF-8") + .hasProperty("project.reporting.outputEncoding", "UTF-8"); } @Test @@ -410,7 +413,8 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests { .hasProperty("spring-boot.version", "1.5.17.RELEASE") .hasBom("org.springframework.boot", "spring-boot-dependencies", "${spring-boot.version}") - .hasBomsCount(1); + .hasBomsCount(1).hasProperty("project.build.sourceEncoding", "UTF-8") + .hasProperty("project.reporting.outputEncoding", "UTF-8"); } @Test diff --git a/initializr-generator/src/test/resources/project/groovy/previous/pom.xml.gen b/initializr-generator/src/test/resources/project/groovy/previous/pom.xml.gen index 2f117a8e..81f62978 100644 --- a/initializr-generator/src/test/resources/project/groovy/previous/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/groovy/previous/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/groovy/standard/pom.xml.gen b/initializr-generator/src/test/resources/project/groovy/standard/pom.xml.gen index 10d878b3..31a3f536 100644 --- a/initializr-generator/src/test/resources/project/groovy/standard/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/groovy/standard/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/groovy/standard/war-pom.xml.gen b/initializr-generator/src/test/resources/project/groovy/standard/war-pom.xml.gen index 39665d96..94d5ddfc 100644 --- a/initializr-generator/src/test/resources/project/groovy/standard/war-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/groovy/standard/war-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/java/previous/pom.xml.gen b/initializr-generator/src/test/resources/project/java/previous/pom.xml.gen index 96237665..a3bd1ad1 100644 --- a/initializr-generator/src/test/resources/project/java/previous/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/java/previous/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/java/standard/pom.xml.gen b/initializr-generator/src/test/resources/project/java/standard/pom.xml.gen index a138933e..68a54243 100644 --- a/initializr-generator/src/test/resources/project/java/standard/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/java/standard/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/java/standard/war-pom.xml.gen b/initializr-generator/src/test/resources/project/java/standard/war-pom.xml.gen index abb8dee2..5aeea089 100644 --- a/initializr-generator/src/test/resources/project/java/standard/war-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/java/standard/war-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/kotlin/previous/pom.xml.gen b/initializr-generator/src/test/resources/project/kotlin/previous/pom.xml.gen index 079e4ca1..b0dff75d 100644 --- a/initializr-generator/src/test/resources/project/kotlin/previous/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/kotlin/previous/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 1.1.1 diff --git a/initializr-generator/src/test/resources/project/kotlin/standard/pom.xml.gen b/initializr-generator/src/test/resources/project/kotlin/standard/pom.xml.gen index abc0d13a..5f5fbdf2 100644 --- a/initializr-generator/src/test/resources/project/kotlin/standard/pom.xml.gen +++ b/initializr-generator/src/test/resources/project/kotlin/standard/pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 1.1.1 diff --git a/initializr-generator/src/test/resources/project/kotlin/standard/war-pom.xml.gen b/initializr-generator/src/test/resources/project/kotlin/standard/war-pom.xml.gen index a9a79918..36d2f27a 100644 --- a/initializr-generator/src/test/resources/project/kotlin/standard/war-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/kotlin/standard/war-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 1.1.1 diff --git a/initializr-generator/src/test/resources/project/maven/annotation-processor-dependency-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/annotation-processor-dependency-pom.xml.gen index 21892565..ec5c3be8 100644 --- a/initializr-generator/src/test/resources/project/maven/annotation-processor-dependency-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/annotation-processor-dependency-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/maven/bom-ordering-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/bom-ordering-pom.xml.gen index c5f0cef9..a9e64edc 100644 --- a/initializr-generator/src/test/resources/project/maven/bom-ordering-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/bom-ordering-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/maven/bom-property-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/bom-property-pom.xml.gen index a56923a2..517be390 100644 --- a/initializr-generator/src/test/resources/project/maven/bom-property-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/bom-property-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.3.3 1.8 diff --git a/initializr-generator/src/test/resources/project/maven/compile-only-dependency-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/compile-only-dependency-pom.xml.gen index 941f4818..8e579192 100644 --- a/initializr-generator/src/test/resources/project/maven/compile-only-dependency-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/compile-only-dependency-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 diff --git a/initializr-generator/src/test/resources/project/maven/kotlin-java11-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/kotlin-java11-pom.xml.gen index 82523684..64064b41 100644 --- a/initializr-generator/src/test/resources/project/maven/kotlin-java11-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/kotlin-java11-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 11 1.1.1 diff --git a/initializr-generator/src/test/resources/project/maven/version-override-pom.xml.gen b/initializr-generator/src/test/resources/project/maven/version-override-pom.xml.gen index f7f1d53e..26e66fd5 100644 --- a/initializr-generator/src/test/resources/project/maven/version-override-pom.xml.gen +++ b/initializr-generator/src/test/resources/project/maven/version-override-pom.xml.gen @@ -16,8 +16,6 @@ Demo project for Spring Boot - UTF-8 - UTF-8 1.8 0.2.0.RELEASE 0.1.0.RELEASE