From 05565dee3fbcacd4aa9ff61ae10f85a684744268 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 29 Dec 2015 15:55:41 +0100 Subject: [PATCH] Upgrade to GMavenPlus A groovy-based project using Maven now builds with GMavenPlus as the Groovy Eclipse maven compiler does not seem to be maintained anymore. This commit also harmonizes the location of the code to be `src/main/groovy` for both Gradle and Maven builds. Joint compilation is enabled by default so that you can create pure Java code in `src/main/java` and refer to any class within the project. Users of IntelliJ IDEA may want to install a plugin that automatically adds `src/main/groovy` to the sources when the GMavenPlus plugin is added to the pom, see https://plugins.jetbrains.com/plugin/7442 Closes gh-90 --- .../generator/ProjectGenerator.groovy | 2 +- .../main/resources/templates/starter-pom.xml | 39 ++++++++----------- .../generator/ProjectGeneratorTests.groovy | 6 +-- .../initializr/test/ProjectAssert.groovy | 5 +-- 4 files changed, 23 insertions(+), 29 deletions(-) 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 ae4a7da1..209efdb2 100644 --- a/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy +++ b/initializr/src/main/groovy/io/spring/initializr/generator/ProjectGenerator.groovy @@ -102,7 +102,7 @@ class ProjectGenerator { def applicationName = request.applicationName def language = request.language - String codeLocation = ((language.equals("groovy") && gradleBuild) ? 'groovy': 'java') + String codeLocation = language.equals("groovy") ? 'groovy': 'java' def src = new File(new File(dir, "src/main/$codeLocation"), request.packageName.replace('.', '/')) src.mkdirs() write(new File(src, "${applicationName}.${language}"), "Application.$language", model) diff --git a/initializr/src/main/resources/templates/starter-pom.xml b/initializr/src/main/resources/templates/starter-pom.xml index eb65a5b2..6f77f885 100644 --- a/initializr/src/main/resources/templates/starter-pom.xml +++ b/initializr/src/main/resources/templates/starter-pom.xml @@ -78,28 +78,23 @@ spring-boot-maven-plugin <% if (language=='groovy') { %> - maven-compiler-plugin - - groovy-eclipse-compiler - - - - org.codehaus.groovy - groovy-eclipse-compiler - 2.9.1-01 - - - org.codehaus.groovy - groovy-eclipse-batch - 2.3.7-01 - - - - - org.codehaus.groovy - groovy-eclipse-compiler - 2.9.1-01 - true + org.codehaus.gmavenplus + gmavenplus-plugin + 1.5 + + + + addSources + addTestSources + generateStubs + compile + testGenerateStubs + testCompile + removeStubs + removeTestStubs + + + <% } %> 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 dbc3be25..36d9aa8b 100644 --- a/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/generator/ProjectGeneratorTests.groovy @@ -217,7 +217,7 @@ class ProjectGeneratorTests { request.bootVersion = '1.1.9.RELEASE' request.name = 'MyDemo' request.packageName = 'foo' - generateProject(request).sourceCodeAssert('src/main/java/foo/MyDemoApplication.groovy') + generateProject(request).sourceCodeAssert('src/main/groovy/foo/MyDemoApplication.groovy') .hasImports(EnableAutoConfiguration.class.name, ComponentScan.class.name, Configuration.class.name) .doesNotHaveImports(SpringBootApplication.class.name) .contains('@EnableAutoConfiguration', '@Configuration', '@ComponentScan') @@ -231,7 +231,7 @@ class ProjectGeneratorTests { request.bootVersion = '1.2.0.RC1' request.name = 'MyDemo' request.packageName = 'foo' - generateProject(request).sourceCodeAssert('src/main/java/foo/MyDemoApplication.groovy') + generateProject(request).sourceCodeAssert('src/main/groovy/foo/MyDemoApplication.groovy') .hasImports(SpringBootApplication.class.name) .doesNotHaveImports(EnableAutoConfiguration.class.name, ComponentScan.class.name, Configuration.class.name) .contains('@SpringBootApplication') @@ -257,7 +257,7 @@ class ProjectGeneratorTests { } @Test - void groovyWithMavenUsesJavaDir() { + void groovyWithMavenUsesGroovyDir() { def request = createProjectRequest('web') request.type = 'maven-project' request.language = 'groovy' diff --git a/initializr/src/test/groovy/io/spring/initializr/test/ProjectAssert.groovy b/initializr/src/test/groovy/io/spring/initializr/test/ProjectAssert.groovy index 2377b4fd..0ceafee6 100644 --- a/initializr/src/test/groovy/io/spring/initializr/test/ProjectAssert.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/test/ProjectAssert.groovy @@ -109,10 +109,9 @@ class ProjectAssert { } ProjectAssert isGroovyProject(String expectedPackageName, String expectedApplicationName) { - String codeLocation = (mavenProject ? 'java' : 'groovy') String packageName = expectedPackageName.replace('.', '/') - hasFile("src/main/$codeLocation/$packageName/${expectedApplicationName}.groovy", - "src/test/$codeLocation/$packageName/${expectedApplicationName}Tests.groovy", + hasFile("src/main/groovy/$packageName/${expectedApplicationName}.groovy", + "src/test/groovy/$packageName/${expectedApplicationName}Tests.groovy", 'src/main/resources/application.properties') }