diff --git a/initializr-generator-spring/pom.xml b/initializr-generator-spring/pom.xml
index b13d194a..fdf634ec 100644
--- a/initializr-generator-spring/pom.xml
+++ b/initializr-generator-spring/pom.xml
@@ -34,6 +34,11 @@
test
test-jar
+
+ org.springframework
+ spring-test
+ test
+
org.junit.jupiter
junit-jupiter
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java
index 34473cbb..f3858a05 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java
@@ -19,7 +19,6 @@ package io.spring.initializr.generator.spring.build;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnLanguage;
@@ -72,7 +71,7 @@ public class BuildProjectGenerationConfiguration {
@Bean
@ConditionalOnLanguage(KotlinLanguage.ID)
- @ConditionalOnBuildSystem({ GradleBuildSystem.ID, GradleKtsBuildSystem.ID })
+ @ConditionalOnBuildSystem(GradleBuildSystem.ID)
public KotlinJpaGradleBuildCustomizer kotlinJpaGradleBuildCustomizer(
InitializrMetadata metadata, KotlinProjectSettings settings) {
return new KotlinJpaGradleBuildCustomizer(metadata, settings);
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributor.java
index 74fe0d94..5601ead3 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributor.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributor.java
@@ -29,14 +29,12 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.project.contributor.ProjectContributor;
/**
- * {@link ProjectContributor} template for the project's {@code build.gradle} or
- * {@code build.gradle.kts} file. A subclass exists for each DSL.
+ * {@link ProjectContributor} for the project's main build file.
*
* @author Andy Wilkinson
* @author Jean-Baptiste Nizet
*/
-public abstract class GradleBuildProjectContributor
- implements BuildWriter, ProjectContributor {
+public class GradleBuildProjectContributor implements BuildWriter, ProjectContributor {
private final GradleBuildWriter buildWriter;
@@ -46,9 +44,8 @@ public abstract class GradleBuildProjectContributor
private final String buildFileName;
- protected GradleBuildProjectContributor(GradleBuildWriter buildWriter,
- GradleBuild build, IndentingWriterFactory indentingWriterFactory,
- String buildFileName) {
+ GradleBuildProjectContributor(GradleBuildWriter buildWriter, GradleBuild build,
+ IndentingWriterFactory indentingWriterFactory, String buildFileName) {
this.buildWriter = buildWriter;
this.build = build;
this.indentingWriterFactory = indentingWriterFactory;
@@ -56,13 +53,13 @@ public abstract class GradleBuildProjectContributor
}
@Override
- public final void contribute(Path projectRoot) throws IOException {
+ public void contribute(Path projectRoot) throws IOException {
Path buildGradle = Files.createFile(projectRoot.resolve(this.buildFileName));
writeBuild(Files.newBufferedWriter(buildGradle));
}
@Override
- public final void writeBuild(Writer out) throws IOException {
+ public void writeBuild(Writer out) throws IOException {
try (IndentingWriter writer = this.indentingWriterFactory
.createIndentingWriter("gradle", out)) {
this.buildWriter.writeTo(writer, this.build);
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java
index c7490b67..df4b81eb 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java
@@ -23,9 +23,10 @@ import io.spring.initializr.generator.buildsystem.BuildItemResolver;
import io.spring.initializr.generator.buildsystem.gradle.Gradle3BuildWriter;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
+import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleSettingsWriter;
import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter;
+import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleSettingsWriter;
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnLanguage;
import io.spring.initializr.generator.condition.ConditionalOnPackaging;
@@ -51,7 +52,7 @@ import org.springframework.context.annotation.Configuration;
* @author Jean-Baptiste Nizet
*/
@ProjectGenerationConfiguration
-@ConditionalOnBuildSystem({ GradleBuildSystem.ID, GradleKtsBuildSystem.ID })
+@ConditionalOnBuildSystem(GradleBuildSystem.ID)
public class GradleProjectGenerationConfiguration {
private final IndentingWriterFactory indentingWriterFactory;
@@ -104,25 +105,28 @@ public class GradleProjectGenerationConfiguration {
@Bean
@ConditionalOnPlatformVersion("2.0.0.M1")
- @ConditionalOnBuildSystem(GradleBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_GROOVY)
public BuildCustomizer applyDependencyManagementPluginContributor() {
return (build) -> build.applyPlugin("io.spring.dependency-management");
}
@Bean
- @ConditionalOnBuildSystem(GradleBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_GROOVY)
public GradleBuildProjectContributor gradleBuildProjectContributor(
GroovyDslGradleBuildWriter buildWriter, GradleBuild build) {
- return new GroovyDslGradleBuildProjectContributor(buildWriter, build,
- this.indentingWriterFactory);
+ return new GradleBuildProjectContributor(buildWriter, build,
+ this.indentingWriterFactory, "build.gradle");
}
@Bean
- @ConditionalOnBuildSystem(GradleKtsBuildSystem.ID)
- public KotlinDslGradleBuildProjectContributor gradleKtsBuildProjectContributor(
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_KOTLIN)
+ public GradleBuildProjectContributor gradleKtsBuildProjectContributor(
KotlinDslGradleBuildWriter buildWriter, GradleBuild build) {
- return new KotlinDslGradleBuildProjectContributor(buildWriter, build,
- this.indentingWriterFactory);
+ return new GradleBuildProjectContributor(buildWriter, build,
+ this.indentingWriterFactory, "build.gradle.kts");
}
/**
@@ -195,7 +199,8 @@ public class GradleProjectGenerationConfiguration {
* Configuration specific to projects using Gradle (Groovy DSL) 4 or 5.
*/
@Configuration
- @ConditionalOnBuildSystem(GradleBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_GROOVY)
@ConditionalOnGradleVersion({ "4", "5" })
static class Gradle4Or5ProjectGenerationConfiguration {
@@ -207,8 +212,8 @@ public class GradleProjectGenerationConfiguration {
@Bean
public SettingsGradleProjectContributor settingsGradleProjectContributor(
GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
- return new GroovyDslSettingsGradleProjectContributor(build,
- indentingWriterFactory);
+ return new SettingsGradleProjectContributor(build, indentingWriterFactory,
+ new GroovyDslGradleSettingsWriter(), "settings.gradle");
}
@Bean
@@ -229,7 +234,9 @@ public class GradleProjectGenerationConfiguration {
* Configuration specific to projects using Gradle (Kotlin DSL).
*/
@Configuration
- @ConditionalOnBuildSystem(GradleKtsBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_KOTLIN)
+ @ConditionalOnGradleVersion("5")
static class GradleKtsProjectGenerationConfiguration {
@Bean
@@ -238,10 +245,10 @@ public class GradleProjectGenerationConfiguration {
}
@Bean
- public KotlinDslSettingsGradleProjectContributor settingsGradleKtsProjectContributor(
+ public SettingsGradleProjectContributor settingsGradleKtsProjectContributor(
GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
- return new KotlinDslSettingsGradleProjectContributor(build,
- indentingWriterFactory);
+ return new SettingsGradleProjectContributor(build, indentingWriterFactory,
+ new KotlinDslGradleSettingsWriter(), "settings.gradle.kts");
}
@Bean
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributor.java
deleted file mode 100644
index 7060d431..00000000
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.project.contributor.ProjectContributor;
-
-/**
- * {@link ProjectContributor} for the project's {@code build.gradle} file.
- *
- * @author Jean-Baptiste Nizet
- */
-public class GroovyDslGradleBuildProjectContributor
- extends GradleBuildProjectContributor {
-
- GroovyDslGradleBuildProjectContributor(GroovyDslGradleBuildWriter buildWriter,
- GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
- super(buildWriter, build, indentingWriterFactory, "build.gradle");
- }
-
-}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributor.java
deleted file mode 100644
index 3f4a87a6..00000000
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleSettingsWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.project.contributor.ProjectContributor;
-
-/**
- * {@link ProjectContributor} for the project's {@code settings.gradle} file.
- *
- * @author Jean-Baptiste Nizet
- */
-class GroovyDslSettingsGradleProjectContributor extends SettingsGradleProjectContributor {
-
- GroovyDslSettingsGradleProjectContributor(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) {
- super(build, indentingWriterFactory, new GroovyDslGradleSettingsWriter(),
- "settings.gradle");
- }
-
-}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributor.java
deleted file mode 100644
index 0ec81b7e..00000000
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.project.contributor.ProjectContributor;
-
-/**
- * {@link ProjectContributor} for the project's {@code build.gradle.kts} file.
- *
- * @author Jean-Baptiste Nizet
- */
-public class KotlinDslGradleBuildProjectContributor
- extends GradleBuildProjectContributor {
-
- KotlinDslGradleBuildProjectContributor(KotlinDslGradleBuildWriter buildWriter,
- GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
- super(buildWriter, build, indentingWriterFactory, "build.gradle.kts");
- }
-
-}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributor.java
deleted file mode 100644
index c6d4fc32..00000000
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleSettingsWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.project.contributor.ProjectContributor;
-
-/**
- * {@link ProjectContributor} for the project's {@code settings.gradle.kts} file.
- *
- * @author Jean-Baptiste Nizet
- */
-class KotlinDslSettingsGradleProjectContributor extends SettingsGradleProjectContributor {
-
- KotlinDslSettingsGradleProjectContributor(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) {
- super(build, indentingWriterFactory, new KotlinDslGradleSettingsWriter(),
- "settings.gradle.kts");
- }
-
-}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributor.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributor.java
index c31cb901..4971f360 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributor.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributor.java
@@ -27,13 +27,12 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.project.contributor.ProjectContributor;
/**
- * {@link ProjectContributor} for the project's {@code settings.gradle}
- * {@code settings.gradle.kts} or file. A subclass exists for each of the DSLs.
+ * {@link ProjectContributor} for the project's settings file.
*
* @author Andy Wilkinson
* @author Jean-Baptiste Nizet
*/
-abstract class SettingsGradleProjectContributor implements ProjectContributor {
+class SettingsGradleProjectContributor implements ProjectContributor {
private final GradleBuild build;
@@ -43,7 +42,7 @@ abstract class SettingsGradleProjectContributor implements ProjectContributor {
private final String settingsFileName;
- protected SettingsGradleProjectContributor(GradleBuild build,
+ SettingsGradleProjectContributor(GradleBuild build,
IndentingWriterFactory indentingWriterFactory,
GradleSettingsWriter settingsWriter, String settingsFileName) {
this.build = build;
@@ -53,7 +52,7 @@ abstract class SettingsGradleProjectContributor implements ProjectContributor {
}
@Override
- public final void contribute(Path projectRoot) throws IOException {
+ public void contribute(Path projectRoot) throws IOException {
Path settingsGradle = Files
.createFile(projectRoot.resolve(this.settingsFileName));
try (IndentingWriter writer = this.indentingWriterFactory.createIndentingWriter(
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java
index 111adbed..c40d05c4 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/groovy/GroovyProjectGenerationDefaultContributorsConfiguration.java
@@ -20,7 +20,6 @@ import java.lang.reflect.Modifier;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnPackaging;
@@ -123,7 +122,7 @@ class GroovyProjectGenerationDefaultContributorsConfiguration {
* Configuration for Groovy projects built with Gradle.
*/
@Configuration
- @ConditionalOnBuildSystem({ GradleBuildSystem.ID, GradleKtsBuildSystem.ID })
+ @ConditionalOnBuildSystem(GradleBuildSystem.ID)
static class GroovyGradleProjectConfiguration {
@Bean
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizer.java
index b64436d0..ba3e0f55 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizer.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizer.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -33,12 +33,13 @@ class GroovyDslKotlinGradleBuildCustomizer extends KotlinGradleBuildCustomizer {
}
@Override
- protected void customizeKotlinOptions(TaskCustomization compile) {
+ protected void customizeKotlinOptions(KotlinProjectSettings settings,
+ TaskCustomization compile) {
compile.nested("kotlinOptions", (kotlinOptions) -> {
- String compilerArgs = this.settings.getCompilerArgs().stream()
+ String compilerArgs = settings.getCompilerArgs().stream()
.map((arg) -> "'" + arg + "'").collect(Collectors.joining(", "));
kotlinOptions.set("freeCompilerArgs", "[" + compilerArgs + "]");
- kotlinOptions.set("jvmTarget", "'" + this.settings.getJvmTarget() + "'");
+ kotlinOptions.set("jvmTarget", "'" + settings.getJvmTarget() + "'");
});
}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizer.java
index 405c4fb7..4fd39348 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizer.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizer.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -33,12 +33,13 @@ class KotlinDslKotlinGradleBuildCustomizer extends KotlinGradleBuildCustomizer {
}
@Override
- protected void customizeKotlinOptions(TaskCustomization compile) {
+ protected void customizeKotlinOptions(KotlinProjectSettings settings,
+ TaskCustomization compile) {
compile.nested("kotlinOptions", (kotlinOptions) -> {
- String compilerArgs = this.settings.getCompilerArgs().stream()
+ String compilerArgs = settings.getCompilerArgs().stream()
.map((arg) -> "\"" + arg + "\"").collect(Collectors.joining(", "));
kotlinOptions.set("freeCompilerArgs", "listOf(" + compilerArgs + ")");
- kotlinOptions.set("jvmTarget", "\"" + this.settings.getJvmTarget() + "\"");
+ kotlinOptions.set("jvmTarget", "\"" + settings.getJvmTarget() + "\"");
});
}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinGradleBuildCustomizer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinGradleBuildCustomizer.java
index 98f4c67b..86f1234f 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinGradleBuildCustomizer.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinGradleBuildCustomizer.java
@@ -21,28 +21,30 @@ import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomi
import io.spring.initializr.generator.spring.build.BuildCustomizer;
/**
- * {@link BuildCustomizer} template for Kotlin projects build with Gradle. A subclass
- * exists for each DSL.
+ * {@link BuildCustomizer} abstraction for Kotlin projects build with Gradle.
*
* @author Andy Wilkinson
* @author Jean-Baptiste Nizet
+ * @see GroovyDslKotlinGradleBuildCustomizer
+ * @see KotlinDslKotlinGradleBuildCustomizer
*/
abstract class KotlinGradleBuildCustomizer implements BuildCustomizer {
- protected final KotlinProjectSettings settings;
+ private final KotlinProjectSettings settings;
KotlinGradleBuildCustomizer(KotlinProjectSettings kotlinProjectSettings) {
this.settings = kotlinProjectSettings;
}
@Override
- public final void customize(GradleBuild build) {
+ public void customize(GradleBuild build) {
build.addPlugin("org.jetbrains.kotlin.jvm", this.settings.getVersion());
build.addPlugin("org.jetbrains.kotlin.plugin.spring", this.settings.getVersion());
build.customizeTasksWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
- this::customizeKotlinOptions);
+ (compile) -> customizeKotlinOptions(this.settings, compile));
}
- protected abstract void customizeKotlinOptions(TaskCustomization compile);
+ protected abstract void customizeKotlinOptions(KotlinProjectSettings settings,
+ TaskCustomization compile);
}
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java
index 8a315f89..107df8e8 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinProjectGenerationDefaultContributorsConfiguration.java
@@ -18,7 +18,6 @@ package io.spring.initializr.generator.spring.code.kotlin;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnPackaging;
@@ -162,7 +161,8 @@ class KotlinProjectGenerationDefaultContributorsConfiguration {
* @author Andy Wilkinson
*/
@Configuration
- @ConditionalOnBuildSystem(GradleBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_GROOVY)
static class KotlinGradleProjectConfiguration {
@Bean
@@ -179,7 +179,8 @@ class KotlinProjectGenerationDefaultContributorsConfiguration {
* @author Jean-Baptiste Nizet
*/
@Configuration
- @ConditionalOnBuildSystem(GradleKtsBuildSystem.ID)
+ @ConditionalOnBuildSystem(id = GradleBuildSystem.ID,
+ dialect = GradleBuildSystem.DIALECT_KOTLIN)
static class KotlinGradleKtsProjectConfiguration {
@Bean
diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfiguration.java
index 02f86293..4296fd65 100644
--- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfiguration.java
+++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/scm/git/GitProjectGenerationConfiguration.java
@@ -17,7 +17,6 @@
package io.spring.initializr.generator.spring.scm.git;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
@@ -57,7 +56,7 @@ public class GitProjectGenerationConfiguration {
}
@Bean
- @ConditionalOnBuildSystem({ GradleBuildSystem.ID, GradleKtsBuildSystem.ID })
+ @ConditionalOnBuildSystem(GradleBuildSystem.ID)
public GitIgnoreCustomizer gradleGitIgnoreCustomizer() {
return (gitIgnore) -> {
gitIgnore.getGeneral().add(".gradle", "/build/",
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/BuildComplianceTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/BuildComplianceTests.java
index e4459afa..a597a708 100755
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/BuildComplianceTests.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/BuildComplianceTests.java
@@ -20,7 +20,6 @@ import java.util.stream.Stream;
import io.spring.initializr.generator.buildsystem.BuildSystem;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.language.Language;
import io.spring.initializr.generator.language.groovy.GroovyLanguage;
@@ -64,9 +63,12 @@ class BuildComplianceTests extends AbstractComplianceTests {
}
static Stream parameters() {
- return Stream.concat(previousGenerationParameters(),
- Stream.of(Arguments.arguments(BuildSystem.forId(GradleKtsBuildSystem.ID),
- "build.gradle.kts")));
+ return Stream
+ .concat(previousGenerationParameters(),
+ Stream.of(Arguments.arguments(
+ BuildSystem.forIdAndDialect(GradleBuildSystem.ID,
+ GradleBuildSystem.DIALECT_KOTLIN),
+ "build.gradle.kts")));
}
@ParameterizedTest
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributorTests.java
new file mode 100644
index 00000000..1717caff
--- /dev/null
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleBuildProjectContributorTests.java
@@ -0,0 +1,133 @@
+/*
+ * 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.spring.build.gradle;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.nio.file.Path;
+import java.util.List;
+
+import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
+import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
+import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter;
+import io.spring.initializr.generator.io.IndentingWriterFactory;
+import io.spring.initializr.generator.io.SimpleIndentStrategy;
+import io.spring.initializr.generator.test.io.TextTestUtils;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Tests for {@link GradleBuildProjectContributor}.
+ *
+ * @author Andy Wilkinson
+ * @author Stephane Nicoll
+ * @author Jean-Baptiste Nizet
+ */
+class GradleBuildProjectContributorTests {
+
+ @Test
+ void groovyDslGradleBuildIsContributedInProjectStructure(@TempDir Path projectDir)
+ throws IOException {
+ GradleBuild build = new GradleBuild();
+ groovyDslGradleBuildProjectContributor(build,
+ IndentingWriterFactory.withDefaultSettings()).contribute(projectDir);
+ Path buildGradle = projectDir.resolve("build.gradle");
+ assertThat(buildGradle).isRegularFile();
+ }
+
+ @Test
+ void groovyDslGradleBuildIsContributedToProject() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.setGroup("com.example");
+ build.setVersion("1.0.0-SNAPSHOT");
+ build.buildscript((buildscript) -> buildscript.ext("someVersion", "'1.2.3'"));
+ List lines = generateBuild(groovyDslGradleBuildProjectContributor(build,
+ IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("buildscript {", " ext {",
+ " someVersion = '1.2.3'", " }", "}");
+ assertThat(lines).containsSequence("group = 'com.example'",
+ "version = '1.0.0-SNAPSHOT'");
+ }
+
+ @Test
+ void groovyDslGradleBuildIsContributedUsingGradleContentId() throws IOException {
+ IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
+ .create(new SimpleIndentStrategy(" "), (factory) -> factory
+ .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
+ GradleBuild build = new GradleBuild();
+ build.buildscript((buildscript) -> buildscript.ext("someVersion", "'1.2.3'"));
+ List lines = generateBuild(
+ groovyDslGradleBuildProjectContributor(build, indentingWriterFactory));
+ assertThat(lines).containsSequence("buildscript {", " ext {",
+ " someVersion = '1.2.3'", " }", "}");
+ }
+
+ @Test
+ void kotlinDslGradleBuildIsContributedInProjectStructure(@TempDir Path projectDir)
+ throws IOException {
+ GradleBuild build = new GradleBuild();
+ kotlinDslGradleBuildProjectContributor(build,
+ IndentingWriterFactory.withDefaultSettings()).contribute(projectDir);
+ Path buildGradleKts = projectDir.resolve("build.gradle.kts");
+ assertThat(buildGradleKts).isRegularFile();
+ }
+
+ @Test
+ void kotlinDslGradleBuildIsContributedToProject() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.setGroup("com.example");
+ build.setVersion("1.0.0-SNAPSHOT");
+ List lines = generateBuild(kotlinDslGradleBuildProjectContributor(build,
+ IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("group = \"com.example\"",
+ "version = \"1.0.0-SNAPSHOT\"");
+ }
+
+ @Test
+ void kotlinDslGradleBuildIsContributedUsingGradleContentId() throws IOException {
+ IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
+ .create(new SimpleIndentStrategy(" "), (factory) -> factory
+ .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
+ GradleBuild build = new GradleBuild();
+ build.addPlugin("java");
+ List lines = generateBuild(
+ kotlinDslGradleBuildProjectContributor(build, indentingWriterFactory));
+ assertThat(lines).containsSequence("plugins {", " java", "}");
+ }
+
+ private List generateBuild(GradleBuildProjectContributor contributor)
+ throws IOException {
+ StringWriter writer = new StringWriter();
+ contributor.writeBuild(writer);
+ return TextTestUtils.readAllLines(writer.toString());
+ }
+
+ private GradleBuildProjectContributor groovyDslGradleBuildProjectContributor(
+ GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
+ return new GradleBuildProjectContributor(new GroovyDslGradleBuildWriter(), build,
+ indentingWriterFactory, "build.gradle");
+ }
+
+ private GradleBuildProjectContributor kotlinDslGradleBuildProjectContributor(
+ GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
+ return new GradleBuildProjectContributor(new KotlinDslGradleBuildWriter(), build,
+ indentingWriterFactory, "build.gradle.kts");
+ }
+
+}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java
index e080c0de..b5c453ca 100644
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -25,14 +25,15 @@ import java.nio.file.Path;
import java.util.List;
import java.util.stream.Stream;
+import io.spring.initializr.generator.buildsystem.BuildWriter;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.DependencyScope;
-import io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystem;
+import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
+import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration;
-import io.spring.initializr.generator.spring.build.BuildWriter;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
@@ -45,6 +46,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
+import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.StreamUtils;
import static org.assertj.core.api.Assertions.assertThat;
@@ -66,8 +68,8 @@ class GradleKtsProjectGenerationConfigurationTests {
.withDirectory(directory)
.withBean(InitializrMetadata.class,
() -> InitializrMetadataTestBuilder.withDefaults().build())
- .withDescriptionCustomizer((description) -> description
- .setBuildSystem(new GradleKtsBuildSystem()));
+ .withDescriptionCustomizer((description) -> description.setBuildSystem(
+ new GradleBuildSystem(GradleBuildSystem.DIALECT_KOTLIN)));
}
static Stream supportedPlatformVersions() {
@@ -83,12 +85,13 @@ class GradleKtsProjectGenerationConfigurationTests {
description.setLanguage(new JavaLanguage());
BuildWriter buildWriter = this.projectTester.generate(description,
(context) -> context.getBean(BuildWriter.class));
- assertThat(buildWriter)
- .isInstanceOf(KotlinDslGradleBuildProjectContributor.class);
+ assertThat(buildWriter).isInstanceOf(GradleBuildProjectContributor.class);
+ assertThat(ReflectionTestUtils.getField(buildWriter, "buildWriter"))
+ .isInstanceOf(KotlinDslGradleBuildWriter.class);
}
static Stream gradleWrapperParameters() {
- return Stream.of(Arguments.arguments("2.1.3.RELEASE", "5.2.1"));
+ return Stream.of(Arguments.arguments("2.1.3.RELEASE", "5.4.1"));
}
@ParameterizedTest(name = "Spring Boot {0}")
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java
index eb0973b4..280151ac 100644
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java
@@ -27,6 +27,7 @@ import io.spring.initializr.generator.buildsystem.BuildWriter;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
+import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
@@ -43,6 +44,8 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
+import org.springframework.test.util.ReflectionTestUtils;
+
import static org.assertj.core.api.Assertions.assertThat;
/**
@@ -82,8 +85,8 @@ class GradleProjectGenerationConfigurationTests {
BuildWriter buildWriter = this.projectTester.generate(description,
(context) -> context.getBean(BuildWriter.class));
assertThat(buildWriter).isInstanceOf(GradleBuildProjectContributor.class);
- assertThat(buildWriter)
- .isNotInstanceOf(KotlinDslGradleBuildProjectContributor.class);
+ assertThat(ReflectionTestUtils.getField(buildWriter, "buildWriter"))
+ .isInstanceOf(GroovyDslGradleBuildWriter.class);
}
static Stream gradleWrapperParameters() {
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributorTests.java
deleted file mode 100644
index cabe2e84..00000000
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslGradleBuildProjectContributorTests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.spring.build.gradle;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.nio.file.Path;
-import java.util.List;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.io.SimpleIndentStrategy;
-import io.spring.initializr.generator.test.io.TextTestUtils;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Tests for {@link GroovyDslGradleBuildProjectContributor}.
- *
- * @author Andy Wilkinson
- * @author Stephane Nicoll
- * @author Jean-Baptiste Nizet
- */
-class GroovyDslGradleBuildProjectContributorTests {
-
- @Test
- void gradleBuildIsContributedInProjectStructure(@TempDir Path projectDir)
- throws IOException {
- GradleBuild build = new GradleBuild();
- new GroovyDslGradleBuildProjectContributor(new GroovyDslGradleBuildWriter(),
- build, IndentingWriterFactory.withDefaultSettings())
- .contribute(projectDir);
- Path buildGradle = projectDir.resolve("build.gradle");
- assertThat(buildGradle).isRegularFile();
- }
-
- @Test
- void gradleBuildIsContributedToProject() throws IOException {
- GradleBuild build = new GradleBuild();
- build.setGroup("com.example");
- build.setVersion("1.0.0-SNAPSHOT");
- build.buildscript((buildscript) -> buildscript.ext("someVersion", "'1.2.3'"));
- List lines = generateBuild(build);
- assertThat(lines).containsSequence("buildscript {", " ext {",
- " someVersion = '1.2.3'", " }", "}");
- assertThat(lines).containsSequence("group = 'com.example'",
- "version = '1.0.0-SNAPSHOT'");
- }
-
- @Test
- void gradleBuildIsContributedUsingGradleContentId() throws IOException {
- IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
- .create(new SimpleIndentStrategy(" "), (factory) -> factory
- .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
- GradleBuild build = new GradleBuild();
- build.buildscript((buildscript) -> buildscript.ext("someVersion", "'1.2.3'"));
- List lines = generateBuild(build, indentingWriterFactory);
- assertThat(lines).containsSequence("buildscript {", " ext {",
- " someVersion = '1.2.3'", " }", "}");
- }
-
- private List generateBuild(GradleBuild build) throws IOException {
- return generateBuild(build, IndentingWriterFactory.withDefaultSettings());
- }
-
- private List generateBuild(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) throws IOException {
- StringWriter writer = new StringWriter();
- new GroovyDslGradleBuildProjectContributor(new GroovyDslGradleBuildWriter(),
- build, indentingWriterFactory).writeBuild(writer);
- return TextTestUtils.readAllLines(writer.toString());
- }
-
-}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributorTests.java
deleted file mode 100644
index f604af4c..00000000
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GroovyDslSettingsGradleProjectContributorTests.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.spring.build.gradle;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.io.SimpleIndentStrategy;
-import io.spring.initializr.generator.test.project.ProjectStructure;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Tests for {@link GroovyDslSettingsGradleProjectContributor}.
- *
- * @author Andy Wilkinson
- * @author Jean-Baptiste Nizet
- */
-class GroovyDslSettingsGradleProjectContributorTests {
-
- @TempDir
- Path directory;
-
- @Test
- void gradleSettingsIsContributedToProject() throws IOException {
- GradleBuild build = new GradleBuild();
- build.pluginRepositories().add("maven-central");
- List lines = generateSettings(build);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " mavenCentral()", " gradlePluginPortal()", " }", "}");
- }
-
- @Test
- void gradleSettingsIsContributedUsingGradleContentId() throws IOException {
- IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
- .create(new SimpleIndentStrategy(" "), (factory) -> factory
- .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
- GradleBuild build = new GradleBuild();
- build.pluginRepositories().add("maven-central");
- List lines = generateSettings(build, indentingWriterFactory);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " mavenCentral()", " gradlePluginPortal()", " }", "}");
- }
-
- @Test
- void gradleSettingsDoesNotUseRepositories() throws IOException {
- GradleBuild build = new GradleBuild();
- build.repositories().add("maven-central");
- List lines = generateSettings(build);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " gradlePluginPortal()", " }", "}");
- }
-
- private List generateSettings(GradleBuild build) throws IOException {
- return generateSettings(build, IndentingWriterFactory.withDefaultSettings());
- }
-
- private List generateSettings(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) throws IOException {
- Path projectDir = Files.createTempDirectory(this.directory, "project-");
- new GroovyDslSettingsGradleProjectContributor(build, indentingWriterFactory)
- .contribute(projectDir);
- return new ProjectStructure(projectDir).readAllLines("settings.gradle");
- }
-
-}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributorTests.java
deleted file mode 100644
index f756cf34..00000000
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslGradleBuildProjectContributorTests.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.List;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleBuildWriter;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.io.SimpleIndentStrategy;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Tests for {@link KotlinDslGradleBuildProjectContributor}.
- *
- * @author Jean-Baptiste Nizet
- */
-class KotlinDslGradleBuildProjectContributorTests {
-
- @Test
- void gradleBuildIsContributedInProjectStructure(@TempDir Path projectDir)
- throws IOException {
- GradleBuild build = new GradleBuild();
- new KotlinDslGradleBuildProjectContributor(new KotlinDslGradleBuildWriter(),
- build, IndentingWriterFactory.withDefaultSettings())
- .contribute(projectDir);
- Path buildGradleKts = projectDir.resolve("build.gradle.kts");
- assertThat(buildGradleKts).isRegularFile();
- }
-
- @Test
- void gradleBuildIsContributedToProject() throws IOException {
- GradleBuild build = new GradleBuild();
- build.setGroup("com.example");
- build.setVersion("1.0.0-SNAPSHOT");
- List lines = generateBuild(build);
- assertThat(lines).containsSequence("group = \"com.example\"",
- "version = \"1.0.0-SNAPSHOT\"");
- }
-
- @Test
- void gradleBuildIsContributedUsingGradleContentId() throws IOException {
- IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
- .create(new SimpleIndentStrategy(" "), (factory) -> factory
- .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
- GradleBuild build = new GradleBuild();
- build.addPlugin("java");
- List lines = generateBuild(build, indentingWriterFactory);
- assertThat(lines).containsSequence("plugins {", " java", "}");
- }
-
- private List generateBuild(GradleBuild build) throws IOException {
- return generateBuild(build, IndentingWriterFactory.withDefaultSettings());
- }
-
- private List generateBuild(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) throws IOException {
- StringWriter writer = new StringWriter();
- new KotlinDslGradleBuildProjectContributor(new KotlinDslGradleBuildWriter(),
- build, indentingWriterFactory).writeBuild(writer);
- return Arrays.asList(writer.toString().split("\\r?\\n"));
- }
-
-}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributorTests.java
deleted file mode 100644
index 84e3a013..00000000
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/KotlinDslSettingsGradleProjectContributorTests.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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
- *
- * http://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.spring.build.gradle;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-
-import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
-import io.spring.initializr.generator.io.IndentingWriterFactory;
-import io.spring.initializr.generator.io.SimpleIndentStrategy;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Tests for {@link KotlinDslSettingsGradleProjectContributor}.
- *
- * @author Jean-Baptiste Nizet
- */
-class KotlinDslSettingsGradleProjectContributorTests {
-
- @TempDir
- Path directory;
-
- @Test
- void gradleSettingsIsContributedToProject() throws IOException {
- GradleBuild build = new GradleBuild();
- build.pluginRepositories().add("maven-central");
- List lines = generateSettings(build);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " mavenCentral()", " gradlePluginPortal()", " }", "}");
- }
-
- @Test
- void gradleSettingsIsContributedUsingGradleContentId() throws IOException {
- IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
- .create(new SimpleIndentStrategy(" "), (factory) -> factory
- .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
- GradleBuild build = new GradleBuild();
- build.pluginRepositories().add("maven-central");
- List lines = generateSettings(build, indentingWriterFactory);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " mavenCentral()", " gradlePluginPortal()", " }", "}");
- }
-
- @Test
- void gradleSettingsDoesNotUseRepositories() throws IOException {
- GradleBuild build = new GradleBuild();
- build.repositories().add("maven-central");
- List lines = generateSettings(build);
- assertThat(lines).containsSequence("pluginManagement {", " repositories {",
- " gradlePluginPortal()", " }", "}");
- }
-
- private List generateSettings(GradleBuild build) throws IOException {
- return generateSettings(build, IndentingWriterFactory.withDefaultSettings());
- }
-
- private List generateSettings(GradleBuild build,
- IndentingWriterFactory indentingWriterFactory) throws IOException {
- Path projectDir = Files.createTempDirectory(this.directory, "project-");
- new KotlinDslSettingsGradleProjectContributor(build, indentingWriterFactory)
- .contribute(projectDir);
- Path settingsGradle = projectDir.resolve("settings.gradle.kts");
- assertThat(settingsGradle).isRegularFile();
- return Files.readAllLines(settingsGradle);
- }
-
-}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributorTests.java
new file mode 100644
index 00000000..dc4f6132
--- /dev/null
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/SettingsGradleProjectContributorTests.java
@@ -0,0 +1,131 @@
+/*
+ * 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.spring.build.gradle;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
+import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
+import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleSettingsWriter;
+import io.spring.initializr.generator.buildsystem.gradle.KotlinDslGradleSettingsWriter;
+import io.spring.initializr.generator.io.IndentingWriterFactory;
+import io.spring.initializr.generator.io.SimpleIndentStrategy;
+import io.spring.initializr.generator.test.project.ProjectStructure;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Tests for {@link SettingsGradleProjectContributorTests}.
+ *
+ * @author Andy Wilkinson
+ * @author Jean-Baptiste Nizet
+ */
+class SettingsGradleProjectContributorTests {
+
+ @TempDir
+ Path directory;
+
+ @Test
+ void groovyDslGradleSettingsIsContributedToProject() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.pluginRepositories().add("maven-central");
+ List lines = generateSettings(groovyDslSettingsGradleProjectContributor(
+ build, IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " mavenCentral()", " gradlePluginPortal()", " }", "}");
+ }
+
+ @Test
+ void groovyDslGradleSettingsIsContributedUsingGradleContentId() throws IOException {
+ IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
+ .create(new SimpleIndentStrategy(" "), (factory) -> factory
+ .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
+ GradleBuild build = new GradleBuild();
+ build.pluginRepositories().add("maven-central");
+ List lines = generateSettings(
+ groovyDslSettingsGradleProjectContributor(build, indentingWriterFactory));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " mavenCentral()", " gradlePluginPortal()", " }", "}");
+ }
+
+ @Test
+ void groovyDslGradleSettingsDoesNotUseRepositories() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.repositories().add("maven-central");
+ List lines = generateSettings(groovyDslSettingsGradleProjectContributor(
+ build, IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " gradlePluginPortal()", " }", "}");
+ }
+
+ @Test
+ void kotlinDslGradleSettingsIsContributedToProject() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.pluginRepositories().add("maven-central");
+ List lines = generateSettings(kotlinDslSettingsGradleProjectContributor(
+ build, IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " mavenCentral()", " gradlePluginPortal()", " }", "}");
+ }
+
+ @Test
+ void kotlinDslGradleSettingsIsContributedUsingGradleContentId() throws IOException {
+ IndentingWriterFactory indentingWriterFactory = IndentingWriterFactory
+ .create(new SimpleIndentStrategy(" "), (factory) -> factory
+ .indentingStrategy("gradle", new SimpleIndentStrategy(" ")));
+ GradleBuild build = new GradleBuild();
+ build.pluginRepositories().add("maven-central");
+ List lines = generateSettings(
+ kotlinDslSettingsGradleProjectContributor(build, indentingWriterFactory));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " mavenCentral()", " gradlePluginPortal()", " }", "}");
+ }
+
+ @Test
+ void kotlinDslGradleSettingsDoesNotUseRepositories() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.repositories().add("maven-central");
+ List lines = generateSettings(kotlinDslSettingsGradleProjectContributor(
+ build, IndentingWriterFactory.withDefaultSettings()));
+ assertThat(lines).containsSequence("pluginManagement {", " repositories {",
+ " gradlePluginPortal()", " }", "}");
+ }
+
+ private List generateSettings(SettingsGradleProjectContributor contributor)
+ throws IOException {
+ Path projectDir = Files.createTempDirectory(this.directory, "project-");
+ contributor.contribute(projectDir);
+ return new ProjectStructure(projectDir).readAllLines("test.gradle");
+ }
+
+ private SettingsGradleProjectContributor groovyDslSettingsGradleProjectContributor(
+ GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
+ return new SettingsGradleProjectContributor(build, indentingWriterFactory,
+ new GroovyDslGradleSettingsWriter(), "test.gradle");
+ }
+
+ private SettingsGradleProjectContributor kotlinDslSettingsGradleProjectContributor(
+ GradleBuild build, IndentingWriterFactory indentingWriterFactory) {
+ return new SettingsGradleProjectContributor(build, indentingWriterFactory,
+ new KotlinDslGradleSettingsWriter(), "test.gradle");
+ }
+
+}
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizerTests.java
index bbe201f2..b1b8ff0e 100644
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizerTests.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizerTests.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -25,11 +25,8 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link GroovyDslKotlinGradleBuildCustomizer}.
*
- * @author Andy Wilkinson <<<<<<<
- * HEAD:initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinGradleBuildCustomizerTests.java
- * @author Jean-Baptiste Nizet ======= >>>>>>> 7ec6a29a... Configure spring project
- * generation using Gradle Kotlin
- * DSL:initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/GroovyDslKotlinGradleBuildCustomizerTests.java
+ * @author Andy Wilkinson
+ * @author Jean-Baptiste Nizet
*/
class GroovyDslKotlinGradleBuildCustomizerTests {
@@ -52,6 +49,8 @@ class GroovyDslKotlinGradleBuildCustomizerTests {
GradleBuild build = new GradleBuild();
new GroovyDslKotlinGradleBuildCustomizer(
new SimpleKotlinProjectSettings("1.2.70")).customize(build);
+ assertThat(build.getImportedTypes())
+ .contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
assertThat(build.getTasksWithTypeCustomizations()).hasSize(1);
assertThat(build.getTasksWithTypeCustomizations()).containsKeys("KotlinCompile");
assertKotlinOptions(build.getTasksWithTypeCustomizations().get("KotlinCompile"));
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizerTests.java
index 82c9b1bb..6de8ee23 100644
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizerTests.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDslKotlinGradleBuildCustomizerTests.java
@@ -48,6 +48,8 @@ class KotlinDslKotlinGradleBuildCustomizerTests {
GradleBuild build = new GradleBuild();
new KotlinDslKotlinGradleBuildCustomizer(
new SimpleKotlinProjectSettings("1.2.70")).customize(build);
+ assertThat(build.getImportedTypes())
+ .contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
assertThat(build.getTasksWithTypeCustomizations()).hasSize(1);
assertThat(build.getTasksWithTypeCustomizations()).containsKeys("KotlinCompile");
assertKotlinOptions(build.getTasksWithTypeCustomizations().get("KotlinCompile"));
diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/build/GradleBuildAssert.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/build/GradleBuildAssert.java
index 48f93663..eb1faef7 100644
--- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/build/GradleBuildAssert.java
+++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/build/GradleBuildAssert.java
@@ -102,7 +102,7 @@ public class GradleBuildAssert extends AbstractStringAssert {
}
for (int i = 0; i < values.length; i += 2) {
builder.append(
- String.format("\tset('%s', '%s')%n", values[i], values[i + 1]));
+ String.format("\tset('%s', \"%s\")%n", values[i], values[i + 1]));
}
builder.append("}");
return contains(builder.toString());
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/gitignore.gen b/initializr-generator-spring/src/test/resources/project/gradle-kts/gitignore.gen
deleted file mode 100644
index d6819a47..00000000
--- a/initializr-generator-spring/src/test/resources/project/gradle-kts/gitignore.gen
+++ /dev/null
@@ -1,26 +0,0 @@
-.gradle
-/build/
-!gradle/wrapper/gradle-wrapper.jar
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-/out/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/annotation-processor-dependency-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/annotation-processor-dependency-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/annotation-processor-dependency-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/annotation-processor-dependency-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/bom-ordering-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/bom-ordering-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/bom-ordering-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/bom-ordering-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.gen b/initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.gen
index d192614c..6bfb446d 100644
--- a/initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.gen
+++ b/initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.gen
@@ -14,7 +14,7 @@ repositories {
}
ext {
- set('fooVersion', '1.3.3')
+ set('fooVersion', "1.3.3")
}
dependencies {
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/bom-property-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/bom-property-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/bom-property-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/compile-only-dependency-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/compile-only-dependency-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/compile-only-dependency-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/compile-only-dependency-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/kotlin-java11-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/kotlin-java11-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/kotlin-java11-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/kotlin-java11-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/repositories-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/repositories-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/repositories-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/repositories-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/repositories-milestone-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/repositories-milestone-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/repositories-milestone-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/repositories-milestone-build.gradle.kts.gen
diff --git a/initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.gen b/initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.gen
index c6c80681..251fc5f0 100644
--- a/initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.gen
+++ b/initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.gen
@@ -14,8 +14,8 @@ repositories {
}
ext {
- set('springBarVersion', '0.2.0.RELEASE')
- set('spring-foo.version', '0.1.0.RELEASE')
+ set('springBarVersion', "0.2.0.RELEASE")
+ set('spring-foo.version', "0.1.0.RELEASE")
}
dependencies {
diff --git a/initializr-generator-spring/src/test/resources/project/gradle-kts/version-override-build.gradle.kts.gen b/initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.kts.gen
similarity index 100%
rename from initializr-generator-spring/src/test/resources/project/gradle-kts/version-override-build.gradle.kts.gen
rename to initializr-generator-spring/src/test/resources/project/gradle/version-override-build.gradle.kts.gen
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystem.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystem.java
index e2437538..33e8d392 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystem.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystem.java
@@ -36,6 +36,15 @@ public interface BuildSystem {
*/
String id();
+ /**
+ * The dialect of the build system, or {@code null} if the build system does not
+ * support multiple dialects.
+ * @return the dialect or {@code null}
+ */
+ default String dialect() {
+ return null;
+ }
+
default Path getMainDirectory(Path projectRoot, Language language) {
return projectRoot.resolve("src/main/" + language.id());
}
@@ -45,13 +54,17 @@ public interface BuildSystem {
}
static BuildSystem forId(String id) {
+ return forIdAndDialect(id, null);
+ }
+
+ static BuildSystem forIdAndDialect(String id, String dialect) {
return SpringFactoriesLoader
.loadFactories(BuildSystemFactory.class,
BuildSystem.class.getClassLoader())
- .stream().map((factory) -> factory.createBuildSystem(id))
- .filter(Objects::nonNull).findFirst()
- .orElseThrow(() -> new IllegalStateException(
- "Unrecognized build system id '" + id + "'"));
+ .stream().map((factory) -> factory.createBuildSystem(id, dialect))
+ .filter(Objects::nonNull).findFirst().orElseThrow(
+ () -> new IllegalStateException("Unrecognized build system id '"
+ + id + "' and dialect '" + dialect + "'"));
}
}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystemFactory.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystemFactory.java
index 177e95e1..7f588347 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystemFactory.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/BuildSystemFactory.java
@@ -31,4 +31,16 @@ public interface BuildSystemFactory {
*/
BuildSystem createBuildSystem(String id);
+ /**
+ * Creates and returns a {@link BuildSystem} for the given {@code id} and
+ * {@code dialect}. If the factory does not recognize the given {@code id} or
+ * {@code dialect}, {@code null} should be returned.
+ * @param id the id of the build system
+ * @param dialect the dialect of the build system
+ * @return the build system or {@code null}
+ */
+ default BuildSystem createBuildSystem(String id, String dialect) {
+ return createBuildSystem(id);
+ }
+
}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystem.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystem.java
index cf20df26..14faaf80 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystem.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystem.java
@@ -19,8 +19,7 @@ package io.spring.initializr.generator.buildsystem.gradle;
import io.spring.initializr.generator.buildsystem.BuildSystem;
/**
- * Gradle {@link BuildSystem} using the Groovy DSL (i.e. settings.gradle and
- * build.gradle).
+ * Gradle {@link BuildSystem}.
*
* @author Andy Wilkinson
*/
@@ -31,11 +30,36 @@ public final class GradleBuildSystem implements BuildSystem {
*/
public static final String ID = "gradle";
+ /**
+ * Gradle build using the Groovy DSL.
+ */
+ public static final String DIALECT_GROOVY = "groovy";
+
+ /**
+ * Gradle build using the Kotlin DSL.
+ */
+ public static final String DIALECT_KOTLIN = "kotlin";
+
+ private final String dialect;
+
+ public GradleBuildSystem() {
+ this(DIALECT_GROOVY);
+ }
+
+ public GradleBuildSystem(String dialect) {
+ this.dialect = dialect;
+ }
+
@Override
public String id() {
return ID;
}
+ @Override
+ public String dialect() {
+ return this.dialect;
+ }
+
@Override
public String toString() {
return id();
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystemFactory.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystemFactory.java
index be9a1927..213fd129 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystemFactory.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildSystemFactory.java
@@ -28,8 +28,19 @@ class GradleBuildSystemFactory implements BuildSystemFactory {
@Override
public BuildSystem createBuildSystem(String id) {
+ return createBuildSystem(id, null);
+ }
+
+ @Override
+ public BuildSystem createBuildSystem(String id, String dialect) {
if (GradleBuildSystem.ID.equals(id)) {
- return new GradleBuildSystem();
+ if (dialect == null) {
+ return new GradleBuildSystem();
+ }
+ if (dialect.equals(GradleBuildSystem.DIALECT_GROOVY)
+ || dialect.equals(GradleBuildSystem.DIALECT_KOTLIN)) {
+ return new GradleBuildSystem(dialect);
+ }
}
return null;
}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildWriter.java
index 940fdc0e..ccb5d5b1 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleBuildWriter.java
@@ -43,12 +43,13 @@ import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
/**
- * A {@link GradleBuild} writer template for build.gradle and build.gradle.kts. A subclass
- * of this class exists for the Groovy DSL and for the Kotlin DSL.
+ * {@link GradleBuild} writer abstraction.
*
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Jean-Baptiste Nizet
+ * @see GroovyDslGradleBuildWriter
+ * @see KotlinDslGradleBuildWriter
*/
public abstract class GradleBuildWriter {
@@ -116,7 +117,7 @@ public abstract class GradleBuildWriter {
}
Map allProperties = new LinkedHashMap<>(build.getExt());
build.getVersionProperties().entrySet().forEach((entry) -> allProperties
- .put(getVersionPropertyKey(entry), "'" + entry.getValue() + "'"));
+ .put(getVersionPropertyKey(entry), "\"" + entry.getValue() + "\""));
writeExtraProperties(writer, allProperties);
}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystem.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystem.java
deleted file mode 100644
index 4b996de0..00000000
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystem.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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
- *
- * http://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.BuildSystem;
-
-/**
- * Gradle {@link BuildSystem} using the Kotlin DSL (i.e. settings.gradle.kts and
- * build.gradle.kts).
- *
- * @author Jean-Baptiste Nizet
- */
-public final class GradleKtsBuildSystem implements BuildSystem {
-
- /**
- * Gradle KTS {@link BuildSystem} identifier.
- */
- public static final String ID = "gradle-kts";
-
- @Override
- public String id() {
- return ID;
- }
-
- @Override
- public String toString() {
- return id();
- }
-
-}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystemFactory.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystemFactory.java
deleted file mode 100644
index 6ee4ce7e..00000000
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleKtsBuildSystemFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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
- *
- * http://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.BuildSystem;
-import io.spring.initializr.generator.buildsystem.BuildSystemFactory;
-
-/**
- * {@link BuildSystemFactory Factory} for {@link GradleKtsBuildSystem}.
- *
- * @author Jean-Baptiste Nizet
- */
-class GradleKtsBuildSystemFactory implements BuildSystemFactory {
-
- @Override
- public BuildSystem createBuildSystem(String id) {
- if (GradleKtsBuildSystem.ID.equals(id)) {
- return new GradleKtsBuildSystem();
- }
- return null;
- }
-
-}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleSettingsWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleSettingsWriter.java
index 76f31020..afd6f7f5 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleSettingsWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GradleSettingsWriter.java
@@ -22,12 +22,12 @@ import io.spring.initializr.generator.buildsystem.MavenRepository;
import io.spring.initializr.generator.io.IndentingWriter;
/**
- * A {@link GradleBuild} writer template for {@code settings.gradle} and
- * {@code settings.gradle.kts}. A subclass of this class exists for the Groovy DSL and for
- * the Kotlin DSL.
+ * {@link GradleBuild} settings abstraction.
*
* @author Andy Wilkinson
* @author Jean-Baptiste Nizet
+ * @see GroovyDslGradleSettingsWriter
+ * @see KotlinDslGradleSettingsWriter
*/
public abstract class GradleSettingsWriter {
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriter.java
index 44fd4824..6d7c758d 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriter.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -119,7 +119,7 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
}
private String getFormattedExtraProperty(String key, String value) {
- return String.format("set('%s', '%s')", key, value);
+ return String.format("set('%s', %s)", key, value);
}
@Override
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleSettingsWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleSettingsWriter.java
index cb132a93..efc9e7fe 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleSettingsWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleSettingsWriter.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriter.java
index bd809803..3a98f5fe 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriter.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -147,7 +147,7 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
}
private String getFormattedExtraProperty(String key, String value) {
- return String.format("extra[\"%s\"] = \"%s\"", key, value);
+ return String.format("extra[\"%s\"] = %s", key, value);
}
@Override
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriter.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriter.java
index be20d80d..a62ecb26 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriter.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriter.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystem.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystem.java
index 31d224e4..2f2f0fc3 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystem.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystem.java
@@ -25,6 +25,7 @@ import java.lang.annotation.Target;
import io.spring.initializr.generator.buildsystem.BuildSystem;
import org.springframework.context.annotation.Conditional;
+import org.springframework.core.annotation.AliasFor;
/**
* Condition that matches when a generated project will use a particular
@@ -39,10 +40,24 @@ import org.springframework.context.annotation.Conditional;
public @interface ConditionalOnBuildSystem {
/**
- * The {@link BuildSystem} that should be checked. The condition matches when at least
- * one build system matches.
- * @return the build systems to check
+ * The ID of the {@link BuildSystem} that should be checked.
+ * @return the build system to check. An alias for {@link #id()}.
*/
- String[] value();
+ @AliasFor("id")
+ String value() default "";
+
+ /**
+ * The ID of the {@link BuildSystem} that should be checked.
+ * @return the build system to check
+ */
+ @AliasFor("value")
+ String id() default "";
+
+ /**
+ * The dialect of the {@link BuildSystem} that should be checked. When not specified,
+ * any dialect will be matched.
+ * @return the dialect to check, if any
+ */
+ String dialect() default "";
}
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java
index fcca31d0..39414f77 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/condition/OnBuildSystemCondition.java
@@ -16,12 +16,13 @@
package io.spring.initializr.generator.condition;
-import java.util.Arrays;
-
+import io.spring.initializr.generator.buildsystem.BuildSystem;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
/**
* {@link ProjectGenerationCondition Condition} implementation for
@@ -34,11 +35,18 @@ class OnBuildSystemCondition extends ProjectGenerationCondition {
@Override
protected boolean matches(ResolvedProjectDescription projectDescription,
ConditionContext context, AnnotatedTypeMetadata metadata) {
- String[] buildSystemIds = (String[]) metadata
- .getAllAnnotationAttributes(ConditionalOnBuildSystem.class.getName())
- .getFirst("value");
- return Arrays.asList(buildSystemIds)
- .contains(projectDescription.getBuildSystem().id());
+ MultiValueMap attributes = metadata
+ .getAllAnnotationAttributes(ConditionalOnBuildSystem.class.getName());
+ String buildSystemId = (String) attributes.getFirst("value");
+ String dialect = (String) attributes.getFirst("dialect");
+ BuildSystem buildSystem = projectDescription.getBuildSystem();
+ if (buildSystem.id().equals(buildSystemId)) {
+ if (StringUtils.hasText(dialect)) {
+ return dialect.equals(buildSystem.dialect());
+ }
+ return true;
+ }
+ return false;
}
}
diff --git a/initializr-generator/src/main/resources/META-INF/spring.factories b/initializr-generator/src/main/resources/META-INF/spring.factories
index c6a96138..fe8d1129 100644
--- a/initializr-generator/src/main/resources/META-INF/spring.factories
+++ b/initializr-generator/src/main/resources/META-INF/spring.factories
@@ -1,6 +1,5 @@
io.spring.initializr.generator.buildsystem.BuildSystemFactory=\
io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystemFactory,\
-io.spring.initializr.generator.buildsystem.gradle.GradleKtsBuildSystemFactory,\
io.spring.initializr.generator.buildsystem.maven.MavenBuildSystemFactory
io.spring.initializr.generator.language.LanguageFactory=\
diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java
index 172a188c..51dfc970 100644
--- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java
@@ -215,9 +215,9 @@ class GroovyDslGradleBuildWriterTests {
GradleBuild build = new GradleBuild();
build.setGroup("com.example.demo");
build.setArtifact("demo");
- build.ext("java.version", "'1.8'").ext("alpha", "file('build/example')");
+ build.ext("java.version", "'1.8'").ext("alpha", "file(\"build/example\")");
List lines = generateBuild(build);
- assertThat(lines).containsSequence(" set('alpha', file('build/example'))",
+ assertThat(lines).containsSequence(" set('alpha', file(\"build/example\"))",
" set('java.version', '1.8')");
}
@@ -229,9 +229,9 @@ class GroovyDslGradleBuildWriterTests {
build.addExternalVersionProperty("external.property", "7.8.9");
List lines = generateBuild(build);
assertThat(lines).containsSequence("ext {",
- " set('external.property', '7.8.9')",
- " set('internalProperty', '4.5.6')",
- " set('versionProperty', '1.2.3')", "}");
+ " set('external.property', \"7.8.9\")",
+ " set('internalProperty', \"4.5.6\")",
+ " set('versionProperty', \"1.2.3\")", "}");
}
@Test
@@ -268,7 +268,7 @@ class GroovyDslGradleBuildWriterTests {
build.ext("myProperty", "'42'");
List lines = generateBuild(build);
assertThat(lines).containsSequence(" set('myProperty', '42')",
- " set('alpha-version', '0.1')", " set('testVersion', '1.0')");
+ " set('alpha-version', \"0.1\")", " set('testVersion', \"1.0\")");
}
@Test
diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java
index 89f38630..29253458 100644
--- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -18,11 +18,11 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
-import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.io.IndentingWriter;
+import io.spring.initializr.generator.test.io.TextTestUtils;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
import org.junit.jupiter.api.Test;
@@ -37,23 +37,6 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
*/
class KotlinDslGradleBuildWriterTests {
- @Test
- void gradleBuildWithImports() throws IOException {
- GradleBuild build = new GradleBuild();
- build.addImportedType(
- "org.springframework.boot.gradle.tasks.buildinfo.BuildInfo");
- build.addImportedType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
- build.addImportedType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile"); // same
- // import
- // added
- // twice
-
- List lines = generateBuild(build);
- assertThat(lines.subList(0, 3)).containsExactly(
- "import org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
- "import org.springframework.boot.gradle.tasks.buildinfo.BuildInfo", "");
- }
-
@Test
void gradleBuildWithCoordinates() throws IOException {
GradleBuild build = new GradleBuild();
@@ -81,23 +64,18 @@ class KotlinDslGradleBuildWriterTests {
}
@Test
- void gradleBuildWithBuildscriptDependency() throws IOException {
+ void gradleBuildWithBuildscriptDependency() {
GradleBuild build = new GradleBuild();
build.buildscript((buildscript) -> buildscript.dependency(
"org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE"));
-
- assertThatIllegalStateException().isThrownBy(() -> {
- generateBuild(build);
- });
+ assertThatIllegalStateException().isThrownBy(() -> generateBuild(build));
}
@Test
- void gradleBuildWithBuildscriptExtProperty() throws IOException {
+ void gradleBuildWithBuildscriptExtProperty() {
GradleBuild build = new GradleBuild();
build.buildscript((buildscript) -> buildscript.ext("kotlinVersion", "\1.2.51\""));
- assertThatIllegalStateException().isThrownBy(() -> {
- generateBuild(build);
- });
+ assertThatIllegalStateException().isThrownBy(() -> generateBuild(build));
}
@Test
@@ -130,10 +108,9 @@ class KotlinDslGradleBuildWriterTests {
}
@Test
- void gradleBuildWithApplyPlugin() throws IOException {
+ void gradleBuildWithApplyPlugin() {
GradleBuild build = new GradleBuild();
build.applyPlugin("io.spring.dependency-management");
-
assertThatIllegalStateException().isThrownBy(() -> generateBuild(build));
}
@@ -178,17 +155,30 @@ class KotlinDslGradleBuildWriterTests {
void gradleBuildWithTaskWithTypesCustomizedWithNestedAssignments()
throws IOException {
GradleBuild build = new GradleBuild();
- build.customizeTasksWithType("KotlinCompile", (task) -> {
- task.nested("kotlinOptions", (kotlinOptions) -> {
- kotlinOptions.set("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")");
- kotlinOptions.set("jvmTarget", "\"1.8\"");
- });
- });
+ build.customizeTasksWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
+ (task) -> task.nested("kotlinOptions", (kotlinOptions) -> kotlinOptions
+ .set("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")")));
+ build.customizeTasksWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
+ (task) -> task.nested("kotlinOptions",
+ (kotlinOptions) -> kotlinOptions.set("jvmTarget", "\"1.8\"")));
List lines = generateBuild(build);
- assertThat(lines).containsSequence("tasks.withType {",
- " kotlinOptions {",
- " freeCompilerArgs = listOf(\"-Xjsr305=strict\")",
- " jvmTarget = \"1.8\"", " }", "}");
+ assertThat(lines)
+ .containsOnlyOnce(
+ "import org.jetbrains.kotlin.gradle.tasks.KotlinCompile")
+ .containsSequence("tasks.withType {",
+ " kotlinOptions {",
+ " freeCompilerArgs = listOf(\"-Xjsr305=strict\")",
+ " jvmTarget = \"1.8\"", " }", "}");
+ }
+
+ @Test
+ void gradleBuildWithTaskWithTypesAndShortTypes() throws IOException {
+ GradleBuild build = new GradleBuild();
+ build.customizeTasksWithType("JavaCompile",
+ (javaCompile) -> javaCompile.set("options.fork", "true"));
+ assertThat(generateBuild(build)).doesNotContain("import JavaCompile")
+ .containsSequence("tasks.withType {",
+ " options.fork = true", "}");
}
@Test
@@ -235,9 +225,9 @@ class KotlinDslGradleBuildWriterTests {
GradleBuild build = new GradleBuild();
build.setGroup("com.example.demo");
build.setArtifact("demo");
- build.ext("java.version", "1.8").ext("alpha", "a");
+ build.ext("java.version", "\"1.8\"").ext("alpha", "file(\"build/example\")");
List lines = generateBuild(build);
- assertThat(lines).containsSequence("extra[\"alpha\"] = \"a\"",
+ assertThat(lines).containsSequence("extra[\"alpha\"] = file(\"build/example\")",
"extra[\"java.version\"] = \"1.8\"");
}
@@ -286,7 +276,7 @@ class KotlinDslGradleBuildWriterTests {
build.addExternalVersionProperty("alpha-version", "0.1");
build.ext("myProperty", "42");
List lines = generateBuild(build);
- assertThat(lines).containsSequence("extra[\"myProperty\"] = \"42\"",
+ assertThat(lines).containsSequence("extra[\"myProperty\"] = 42",
"extra[\"alpha-version\"] = \"0.1\"", "extra[\"testVersion\"] = \"1.0\"");
}
@@ -451,7 +441,7 @@ class KotlinDslGradleBuildWriterTests {
GradleBuildWriter writer = new KotlinDslGradleBuildWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
- return Arrays.asList(out.toString().split("\\r?\\n"));
+ return TextTestUtils.readAllLines(out.toString());
}
}
diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriterTests.java
index 474add7a..6f4fb06c 100644
--- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriterTests.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleSettingsWriterTests.java
@@ -5,7 +5,7 @@
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java
index e4897378..ce023513 100644
--- a/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/generator/condition/ConditionalOnBuildSystemTests.java
@@ -55,12 +55,11 @@ class ConditionalOnBuildSystemTests {
}
@Test
- void outcomeWithSeveralBuildSystemsAndMatchingId() {
+ void conditionalOnGradleWithKotlinDialectMatchesWhenGradleBuildSystemUsesKotlinDialect() {
ProjectDescription projectDescription = new ProjectDescription();
- projectDescription.setBuildSystem(new MavenBuildSystem());
- assertThat(candidatesFor(projectDescription, BuildSystemTestConfiguration.class,
- MavenOrGradleBuildSystemTestConfiguration.class))
- .containsOnlyKeys("maven", "mavenOrGradle");
+ projectDescription.setBuildSystem(new GradleBuildSystem("kotlin"));
+ assertThat(candidatesFor(projectDescription, BuildSystemTestConfiguration.class))
+ .containsOnlyKeys("gradle", "gradleKotlin");
}
private Map candidatesFor(ProjectDescription projectDescription,
@@ -91,15 +90,10 @@ class ConditionalOnBuildSystemTests {
return "testNone";
}
- }
-
- @Configuration
- static class MavenOrGradleBuildSystemTestConfiguration {
-
@Bean
- @ConditionalOnBuildSystem({ "gradle", "maven" })
- public String mavenOrGradle() {
- return "testMavenOrGradle";
+ @ConditionalOnBuildSystem(id = "gradle", dialect = "kotlin")
+ public String gradleKotlin() {
+ return "testGradleKotlinDialect";
}
}