From 0d08d5f7f1ae6565cf67240190a847aefbdb95ab Mon Sep 17 00:00:00 2001 From: Scott Murphy Heiberg Date: Sat, 2 Nov 2024 18:03:27 -0700 Subject: [PATCH 1/5] Default import of java.time.* --- .../gradle/plugin/core/GrailsExtension.groovy | 5 ++++ .../plugin/web/gsp/GroovyPagePlugin.groovy | 26 +++++++++++++++++-- .../resources/GrailsCompilerConfig.groovy | 6 +++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/GrailsCompilerConfig.groovy diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy index 90e62037..d2dfa8db 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy @@ -43,6 +43,11 @@ class GrailsExtension { */ boolean pathingJar = false + /** + * Whether java.time.* package should be a default import package + */ + boolean javaTime = true + /** * Configure the reloading agent */ diff --git a/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy index 28873957..bb0e211f 100644 --- a/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy @@ -12,6 +12,7 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetOutput import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.bundling.War +import org.gradle.api.tasks.compile.GroovyCompile import org.grails.gradle.plugin.core.GrailsExtension import org.grails.gradle.plugin.util.SourceSets @@ -68,8 +69,30 @@ class GroovyPagePlugin implements Plugin { compileWebappGroovyPages.setClasspath( allClasspath ) + GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) + + project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> + if (grailsExt.javaTime) { + groovyCompileTask.doFirst { + def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") + if (configScriptStream != null) { + def tempConfigScriptFile = File.createTempFile("build/GrailsCompilerConfig", ".groovy") + tempConfigScriptFile.mkdirs() + tempConfigScriptFile.deleteOnExit() + + def existingScript = groovyCompileTask.groovyOptions.configurationScript + if (existingScript) { + tempConfigScriptFile << existingScript.text + } + + tempConfigScriptFile.text = configScriptStream.text + groovyCompileTask.groovyOptions.configurationScript = tempConfigScriptFile + } + } + } + } + project.afterEvaluate { - GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) if (grailsExt.pathingJar && Os.isFamily(Os.FAMILY_WINDOWS)) { Jar pathingJar = (Jar) allTasks.findByName('pathingJar') allClasspath = project.files("${project.buildDir}/classes/groovy/main", "${project.buildDir}/resources/main", pathingJar.archiveFile) @@ -80,7 +103,6 @@ class GroovyPagePlugin implements Plugin { } } - compileGroovyPages.dependsOn( allTasks.findByName("classes") ) compileGroovyPages.dependsOn( compileWebappGroovyPages ) diff --git a/src/main/resources/GrailsCompilerConfig.groovy b/src/main/resources/GrailsCompilerConfig.groovy new file mode 100644 index 00000000..a7a7ada4 --- /dev/null +++ b/src/main/resources/GrailsCompilerConfig.groovy @@ -0,0 +1,6 @@ +import org.codehaus.groovy.control.customizers.ImportCustomizer + +def importCustomizer = new ImportCustomizer() +importCustomizer.addStarImports('java.time') + +configuration.addCompilationCustomizers(importCustomizer) \ No newline at end of file From c97acd9500dcde4491ebf95fa90636dcade1c2a7 Mon Sep 17 00:00:00 2001 From: Scott Murphy Heiberg Date: Sat, 2 Nov 2024 21:36:22 -0700 Subject: [PATCH 2/5] Move java time from grails-gsp to grails-plugin --- .../plugin/core/GrailsGradlePlugin.groovy | 27 +++++++++++++++++++ .../plugin/web/gsp/GroovyPagePlugin.groovy | 25 +---------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy index db1ae17e..29b9f8b5 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy @@ -142,6 +142,8 @@ class GrailsGradlePlugin extends GroovyPlugin { configureRunCommand(project) + configureJavaTime(project) + configurePathingJar(project) } @@ -652,6 +654,31 @@ class GrailsGradlePlugin extends GroovyPlugin { output?.classesDirs ?: project.files(new File(project.buildDir, "classes/main")) } + protected void configureJavaTime(Project project) { + GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) + + project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> + if (grailsExt.javaTime) { + groovyCompileTask.doFirst { + def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") + if (configScriptStream != null) { + def tempConfigScriptFile = File.createTempFile("build/GrailsCompilerConfig", ".groovy") + tempConfigScriptFile.mkdirs() + tempConfigScriptFile.deleteOnExit() + + def existingScript = groovyCompileTask.groovyOptions.configurationScript + if (existingScript) { + tempConfigScriptFile << existingScript.text + } + + tempConfigScriptFile.text = configScriptStream.text + groovyCompileTask.groovyOptions.configurationScript = tempConfigScriptFile + } + } + } + } + } + @CompileDynamic protected void configurePathingJar(Project project) { project.afterEvaluate { diff --git a/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy index bb0e211f..8b60e656 100644 --- a/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/web/gsp/GroovyPagePlugin.groovy @@ -12,7 +12,6 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetOutput import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.bundling.War -import org.gradle.api.tasks.compile.GroovyCompile import org.grails.gradle.plugin.core.GrailsExtension import org.grails.gradle.plugin.util.SourceSets @@ -69,30 +68,8 @@ class GroovyPagePlugin implements Plugin { compileWebappGroovyPages.setClasspath( allClasspath ) - GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) - - project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> - if (grailsExt.javaTime) { - groovyCompileTask.doFirst { - def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") - if (configScriptStream != null) { - def tempConfigScriptFile = File.createTempFile("build/GrailsCompilerConfig", ".groovy") - tempConfigScriptFile.mkdirs() - tempConfigScriptFile.deleteOnExit() - - def existingScript = groovyCompileTask.groovyOptions.configurationScript - if (existingScript) { - tempConfigScriptFile << existingScript.text - } - - tempConfigScriptFile.text = configScriptStream.text - groovyCompileTask.groovyOptions.configurationScript = tempConfigScriptFile - } - } - } - } - project.afterEvaluate { + GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) if (grailsExt.pathingJar && Os.isFamily(Os.FAMILY_WINDOWS)) { Jar pathingJar = (Jar) allTasks.findByName('pathingJar') allClasspath = project.files("${project.buildDir}/classes/groovy/main", "${project.buildDir}/resources/main", pathingJar.archiveFile) From c978ee22fc824e9ae47a9fab3538759f6005f4e0 Mon Sep 17 00:00:00 2001 From: Scott Murphy Heiberg Date: Sat, 2 Nov 2024 21:40:20 -0700 Subject: [PATCH 3/5] add newline --- src/main/resources/GrailsCompilerConfig.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/GrailsCompilerConfig.groovy b/src/main/resources/GrailsCompilerConfig.groovy index a7a7ada4..c1a4c6ee 100644 --- a/src/main/resources/GrailsCompilerConfig.groovy +++ b/src/main/resources/GrailsCompilerConfig.groovy @@ -3,4 +3,4 @@ import org.codehaus.groovy.control.customizers.ImportCustomizer def importCustomizer = new ImportCustomizer() importCustomizer.addStarImports('java.time') -configuration.addCompilationCustomizers(importCustomizer) \ No newline at end of file +configuration.addCompilationCustomizers(importCustomizer) From 440ee26ca7d1bd5523a5f605fad7d7d9592d21f0 Mon Sep 17 00:00:00 2001 From: Scott Murphy Heiberg Date: Fri, 8 Nov 2024 10:14:57 -0500 Subject: [PATCH 4/5] move java.time configuration into confiugre groovy --- .../plugin/core/GrailsGradlePlugin.groovy | 49 +++++++++---------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy index 29b9f8b5..c60d1748 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy @@ -142,8 +142,6 @@ class GrailsGradlePlugin extends GroovyPlugin { configureRunCommand(project) - configureJavaTime(project) - configurePathingJar(project) } @@ -291,6 +289,28 @@ class GrailsGradlePlugin extends GroovyPlugin { } } } + + GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) + project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> + if (grailsExt.javaTime) { + groovyCompileTask.doFirst { + def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") + if (configScriptStream != null) { + def tempConfigScriptFile = File.createTempFile("build/GrailsCompilerConfig", ".groovy") + tempConfigScriptFile.mkdirs() + tempConfigScriptFile.deleteOnExit() + + def existingScript = groovyCompileTask.groovyOptions.configurationScript + if (existingScript) { + tempConfigScriptFile << existingScript.text + } + + tempConfigScriptFile.text = configScriptStream.text + groovyCompileTask.groovyOptions.configurationScript = tempConfigScriptFile + } + } + } + } } @CompileStatic @@ -654,31 +674,6 @@ class GrailsGradlePlugin extends GroovyPlugin { output?.classesDirs ?: project.files(new File(project.buildDir, "classes/main")) } - protected void configureJavaTime(Project project) { - GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) - - project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> - if (grailsExt.javaTime) { - groovyCompileTask.doFirst { - def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") - if (configScriptStream != null) { - def tempConfigScriptFile = File.createTempFile("build/GrailsCompilerConfig", ".groovy") - tempConfigScriptFile.mkdirs() - tempConfigScriptFile.deleteOnExit() - - def existingScript = groovyCompileTask.groovyOptions.configurationScript - if (existingScript) { - tempConfigScriptFile << existingScript.text - } - - tempConfigScriptFile.text = configScriptStream.text - groovyCompileTask.groovyOptions.configurationScript = tempConfigScriptFile - } - } - } - } - } - @CompileDynamic protected void configurePathingJar(Project project) { project.afterEvaluate { From 56cda387090b4dd14343ae715e4668a40a36ec4a Mon Sep 17 00:00:00 2001 From: Scott Murphy Heiberg Date: Fri, 8 Nov 2024 12:25:37 -0500 Subject: [PATCH 5/5] javaTime -> importJavaTime --- .../groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy | 2 +- .../org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy index d2dfa8db..71508746 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy @@ -46,7 +46,7 @@ class GrailsExtension { /** * Whether java.time.* package should be a default import package */ - boolean javaTime = true + boolean importJavaTime = true /** * Configure the reloading agent diff --git a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy index c60d1748..93885a7b 100644 --- a/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy +++ b/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy @@ -292,7 +292,7 @@ class GrailsGradlePlugin extends GroovyPlugin { GrailsExtension grailsExt = project.extensions.getByType(GrailsExtension) project.tasks.withType(GroovyCompile).configureEach { groovyCompileTask -> - if (grailsExt.javaTime) { + if (grailsExt.importJavaTime) { groovyCompileTask.doFirst { def configScriptStream = getClass().getResourceAsStream("/GrailsCompilerConfig.groovy") if (configScriptStream != null) {