diff --git a/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy b/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy index 6cef4709..8b8e24d2 100644 --- a/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy +++ b/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy @@ -39,6 +39,8 @@ class ProjectGenerator { private static final VERSION_1_2_0_RC1 = Version.parse('1.2.0.RC1') + private static final VERSION_1_3_0_M1 = Version.parse('1.3.0.M1') + @Autowired InitializrMetadata metadata @@ -183,6 +185,11 @@ class ProjectGenerator { // @SpringBootApplication available as from 1.2.0.RC1 model['useSpringBootApplication'] = VERSION_1_2_0_RC1 .compareTo(Version.safeParse(request.bootVersion)) <= 0 + + // Gradle plugin has changed as from 1.3.0 + model['bootOneThreeAvailable'] = VERSION_1_3_0_M1 + .compareTo(Version.safeParse(request.bootVersion)) <= 0 + model } diff --git a/initializr/src/main/resources/templates/starter-build.gradle b/initializr/src/main/resources/templates/starter-build.gradle index 7744d503..1b231b43 100644 --- a/initializr/src/main/resources/templates/starter-build.gradle +++ b/initializr/src/main/resources/templates/starter-build.gradle @@ -5,19 +5,21 @@ buildscript { repositories { mavenCentral()<% if (!bootVersion.contains("RELEASE")) { %> maven { url "https://repo.spring.io/snapshot" } - maven { url "https://repo.spring.io/milestone" } -<% } %> + maven { url "https://repo.spring.io/milestone" }<% } %> } dependencies { - classpath("org.springframework.boot:spring-boot-gradle-plugin:\${springBootVersion}") + classpath("org.springframework.boot:spring-boot-gradle-plugin:\${springBootVersion}") <% if (!bootOneThreeAvailable) { %> + classpath("io.spring.gradle:dependency-management-plugin:0.4.1.RELEASE")<% } %> } } apply plugin: '${language}'<% if (packaging=='war') { %> apply plugin: 'eclipse-wtp'<% } else { %> apply plugin: 'eclipse'<% } %> -apply plugin: 'idea' -apply plugin: 'spring-boot' <% if (packaging=='war') { %> +apply plugin: 'idea' <% if (bootOneThreeAvailable) { %> +apply plugin: 'org.springframework.boot.spring-boot' <% } else { %> +apply plugin: 'spring-boot' +apply plugin: 'io.spring.dependency-management'<% } %><% if (packaging=='war') { %> apply plugin: 'war' <% } %> @@ -31,8 +33,7 @@ targetCompatibility = ${javaVersion} repositories { mavenCentral()<% if (!bootVersion.contains("RELEASE")) { %> maven { url "https://repo.spring.io/snapshot" } - maven { url "https://repo.spring.io/milestone" } -<% } %> + maven { url "https://repo.spring.io/milestone" }<% } %> } <% if (packaging=='war') { %>configurations { diff --git a/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGenerationMetricsListenerTests.groovy b/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGenerationMetricsListenerTests.groovy index f62c3545..54975515 100644 --- a/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGenerationMetricsListenerTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGenerationMetricsListenerTests.groovy @@ -168,7 +168,7 @@ class ProjectGenerationMetricsListenerTests { def request = initialize() request.resolve(metadata) listener.onGeneratedProject(request) - metricsAssert.hasValue(1, 'initializr.boot_version.1_1_5_RELEASE') + metricsAssert.hasValue(1, 'initializr.boot_version.1_2_3_RELEASE') } @Test diff --git a/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy b/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy index 7f5f9dc8..c31ce7c3 100644 --- a/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy @@ -31,7 +31,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration -import static org.mockito.Mockito.* +import static org.mockito.Mockito.mock +import static org.mockito.Mockito.times +import static org.mockito.Mockito.verify /** * @author Stephane Nicoll @@ -300,6 +302,30 @@ class ProjectGeneratorTests { .contains("testCompile(\"org.hamcrest:hamcrest\")") } + @Test + void gradleBuildBeforeWithSpringBoot13() { + def request = createProjectRequest('web') + request.bootVersion = '1.2.3.RELEASE' + generateGradleBuild(request) + .contains("springBootVersion = '1.2.3.RELEASE'") + .contains('classpath("io.spring.gradle:dependency-management-plugin:0.4.1.RELEASE")') + .contains("apply plugin: 'spring-boot'") + .contains("apply plugin: 'io.spring.dependency-management'") + .doesNotContain("apply plugin: 'org.springframework.boot.spring-boot'") + } + + @Test + void gradleBuildAsFromSpringBoot13() { + def request = createProjectRequest('web') + request.bootVersion = '1.3.0.BUILD-SNAPSHOT' + generateGradleBuild(request) + .contains("springBootVersion = '1.3.0.BUILD-SNAPSHOT'") + .contains("apply plugin: 'org.springframework.boot.spring-boot'") + .doesNotContain('classpath("io.spring.gradle:dependency-management-plugin:0.4.1.RELEASE")') + .doesNotContain("apply plugin: 'spring-boot'") + .doesNotContain("apply plugin: 'io.spring.dependency-management'") + } + PomAssert generateMavenPom(ProjectRequest request) { def content = new String(projectGenerator.generateMavenPom(request)) new PomAssert(content).validateProjectRequest(request) diff --git a/initializr/src/test/groovy/io/spring/initializr/test/GradleBuildAssert.groovy b/initializr/src/test/groovy/io/spring/initializr/test/GradleBuildAssert.groovy index f9c2d5d2..86568b6a 100644 --- a/initializr/src/test/groovy/io/spring/initializr/test/GradleBuildAssert.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/test/GradleBuildAssert.groovy @@ -18,6 +18,7 @@ package io.spring.initializr.test import io.spring.initializr.generator.ProjectRequest +import static org.junit.Assert.assertFalse import static org.junit.Assert.assertTrue /** @@ -63,4 +64,9 @@ class GradleBuildAssert { assertTrue "$expression has not been found in gradle build $content", content.contains(expression) this } + + GradleBuildAssert doesNotContain(String expression) { + assertFalse "$expression is not expected in gradle build $content", content.contains(expression) + this + } } diff --git a/initializr/src/test/groovy/io/spring/initializr/test/InitializrMetadataTestBuilder.groovy b/initializr/src/test/groovy/io/spring/initializr/test/InitializrMetadataTestBuilder.groovy index 6242f4ef..36a33e77 100644 --- a/initializr/src/test/groovy/io/spring/initializr/test/InitializrMetadataTestBuilder.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/test/InitializrMetadataTestBuilder.groovy @@ -128,8 +128,8 @@ class InitializrMetadataTestBuilder { } InitializrMetadataTestBuilder addDefaultBootVersions() { - addBootVersion('1.0.2.RELEASE', false).addBootVersion('1.1.5.RELEASE', true) - .addBootVersion('1.2.0.BUILD-SNAPSHOT', false) + addBootVersion('1.1.2.RELEASE', false).addBootVersion('1.2.3.RELEASE', true) + .addBootVersion('1.3.0.BUILD-SNAPSHOT', false) } InitializrMetadataTestBuilder addBootVersion(String id, boolean defaultValue) {