diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java
index 4adab3a8..c849b538 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java
@@ -467,10 +467,8 @@ public class ProjectGenerator {
// Java versions
model.put("java8OrLater", isJava8OrLater(request));
- // Has JPA facet
- if (request.hasJpaFacet()) {
- model.put("jpaFacet", true);
- }
+ // Facets
+ request.getFacets().forEach((facet) -> model.put("facets." + facet, true));
// Append the project request to the model
BeanWrapperImpl bean = new BeanWrapperImpl(request);
diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java
index 4341ba94..da4f2a3c 100644
--- a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java
+++ b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectRequest.java
@@ -304,14 +304,6 @@ public class ProjectRequest extends BasicProjectRequest {
this.resolvedDependencies.add(root);
}
- /**
- * Specify if this request has the web facet enabled.
- * @return {@code true} if the project has the web facet
- */
- public boolean hasWebFacet() {
- return hasFacet("web");
- }
-
/**
* Specify if this request has the jpa facet enabled.
* @return {@code true} if the project has the jpa facet
@@ -320,6 +312,14 @@ public class ProjectRequest extends BasicProjectRequest {
return hasFacet("jpa");
}
+ /**
+ * Specify if this request has the web facet enabled.
+ * @return {@code true} if the project has the web facet
+ */
+ public boolean hasWebFacet() {
+ return hasFacet("web");
+ }
+
/**
* Specify if this request has the specified facet enabled.
* @param facet the facet to check
diff --git a/initializr-generator/src/main/resources/templates/starter-build.gradle b/initializr-generator/src/main/resources/templates/starter-build.gradle
index 6c3c1a98..417c94f9 100644
--- a/initializr-generator/src/main/resources/templates/starter-build.gradle
+++ b/initializr-generator/src/main/resources/templates/starter-build.gradle
@@ -19,9 +19,9 @@ buildscript {
{{#kotlin}}
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
- {{#jpaFacet}}
+ {{#facets.jpa}}
classpath("org.jetbrains.kotlin:kotlin-noarg:${kotlinVersion}")
- {{/jpaFacet}}
+ {{/facets.jpa}}
{{/kotlin}}
}
}
@@ -29,9 +29,9 @@ buildscript {
apply plugin: '{{language}}'
{{#kotlin}}
apply plugin: 'kotlin-spring'
-{{#jpaFacet}}
+{{#facets.jpa}}
apply plugin: 'kotlin-jpa'
-{{/jpaFacet}}
+{{/facets.jpa}}
{{/kotlin}}
{{#war}}
apply plugin: 'eclipse-wtp'
diff --git a/initializr-generator/src/main/resources/templates/starter-pom.xml b/initializr-generator/src/main/resources/templates/starter-pom.xml
index 95c9fa45..b2b1f66f 100644
--- a/initializr-generator/src/main/resources/templates/starter-pom.xml
+++ b/initializr-generator/src/main/resources/templates/starter-pom.xml
@@ -195,9 +195,9 @@
spring
- {{#jpaFacet}}
+ {{#facets.jpa}}
jpa
- {{/jpaFacet}}
+ {{/facets.jpa}}
{{^kotlinSupport}}
{{#java8OrLater}}
@@ -229,6 +229,13 @@
kotlin-maven-allopen
${kotlin.version}
+ {{#facets.jpa}}
+
+ org.jetbrains.kotlin
+ kotlin-maven-noarg
+ ${kotlin.version}
+
+ {{/facets.jpa}}
{{/kotlin}}
diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java
index 2ce15680..184b23a6 100755
--- a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorTests.java
@@ -962,90 +962,69 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
@Test
public void kotlinWithMavenUseJpaFacetHasJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- jpa.setFacets(Collections.singletonList("jpa"));
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(true);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("maven-project");
request.setLanguage("kotlin");
- assertThat(generateMavenPom(request).getMavenPom())
- .contains("jpa");
+ generateMavenPom(request).contains("jpa")
+ .contains("kotlin-maven-noarg");
}
@Test
public void kotlinWithMavenWithoutJpaFacetDoesNotHaveJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(false);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("maven-project");
request.setLanguage("kotlin");
- assertThat(generateMavenPom(request).getMavenPom())
- .doesNotContain("jpa");
+ generateMavenPom(request).doesNotContain("jpa")
+ .doesNotContain("kotlin-maven-noarg");
}
@Test
public void javaWithMavenUseJpaFacetDoesNotHaveJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- jpa.setFacets(Collections.singletonList("jpa"));
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(true);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("maven-project");
request.setLanguage("java");
- assertThat(generateMavenPom(request).getMavenPom())
- .doesNotContain("jpa");
+ generateMavenPom(request).doesNotContain("jpa")
+ .doesNotContain("kotlin-maven-noarg");
}
@Test
public void kotlinWithGradleUseJpaFacetHasJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- jpa.setFacets(Collections.singletonList("jpa"));
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(true);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("gradle-project");
request.setLanguage("kotlin");
- assertThat(generateGradleBuild(request).getGradleBuild())
- .contains("apply plugin: 'kotlin-jpa'");
+ generateGradleBuild(request).contains("apply plugin: 'kotlin-jpa'");
}
@Test
public void kotlinWithGradleWithoutJpaFacetDoesNotHaveJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(false);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("gradle-project");
request.setLanguage("kotlin");
- assertThat(generateGradleBuild(request).getGradleBuild())
- .doesNotContain("apply plugin: 'kotlin-jpa'");
+ generateGradleBuild(request).doesNotContain("apply plugin: 'kotlin-jpa'");
}
@Test
public void javaWithGradleUseJpaFacetDoesNotHaveJpaKotlinPlugin() {
- Dependency jpa = Dependency.withId("data-jpa");
- jpa.setFacets(Collections.singletonList("jpa"));
- InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
- .addDependencyGroup("data-jpa", jpa).build();
- applyMetadata(metadata);
-
+ applyJpaMetadata(true);
ProjectRequest request = createProjectRequest("data-jpa");
request.setType("gradle-project");
request.setLanguage("java");
- assertThat(generateGradleBuild(request).getGradleBuild())
- .doesNotContain("apply plugin: 'kotlin-jpa'");
+ generateGradleBuild(request).doesNotContain("apply plugin: 'kotlin-jpa'");
+ }
+
+ private void applyJpaMetadata(boolean enableJpaFacet) {
+ Dependency jpa = Dependency.withId("data-jpa");
+ if (enableJpaFacet) {
+ jpa.setFacets(Collections.singletonList("jpa"));
+ }
+ InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
+ .addDependencyGroup("data-jpa", jpa).build();
+ applyMetadata(metadata);
}
}
diff --git a/initializr-generator/src/test/java/io/spring/initializr/test/generator/PomAssert.java b/initializr-generator/src/test/java/io/spring/initializr/test/generator/PomAssert.java
index 1ea3693a..86d08c68 100644
--- a/initializr-generator/src/test/java/io/spring/initializr/test/generator/PomAssert.java
+++ b/initializr-generator/src/test/java/io/spring/initializr/test/generator/PomAssert.java
@@ -94,6 +94,16 @@ public class PomAssert {
.hasJavaVersion(request.getJavaVersion());
}
+ public PomAssert contains(String expression) {
+ assertThat(this.content).contains(expression);
+ return this;
+ }
+
+ public PomAssert doesNotContain(String expression) {
+ assertThat(this.content).doesNotContain(expression);
+ return this;
+ }
+
public PomAssert hasGroupId(String groupId) {
try {
assertThat(this.eng.evaluate(createRootNodeXPath("groupId"), this.doc))
@@ -301,10 +311,6 @@ public class PomAssert {
return this;
}
- public String getMavenPom() {
- return this.content;
- }
-
private PomAssert hasPluginRepository(String name) {
NodeList nodes;
try {