This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch upgrade/gradle-9.3.1
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 9fb682661fcd01a18427b2763c460b9ec9fef228
Author: James Fredley <[email protected]>
AuthorDate: Fri Jan 30 07:45:13 2026 -0500

    Upgrade to Gradle 9.3.1
    
    - Update Gradle wrapper to 9.3.1 across grails-core, grails-gradle, 
build-logic, and profiles
    - Migrate Groovy dependencies from org.codehaus.groovy to org.apache.groovy 
(Groovy 4+)
    - Update Spock version for grails-gradle tests to 2.3-groovy-4.0
    - Add explicit groovy.ant.AntBuilder import (moved in Groovy 4)
    - Make task classes abstract for Gradle 9 compatibility (JavaExec, 
AbstractCompile)
    - Add @Inject annotation to task constructors where required
    - Fix documentation configuration attributes for groovydoc tasks
    - Update IOUtilsSpec test expectation for Groovy 4 Spock jar name
    
    Note: grails-forge remains on Gradle 8.x pending Micronaut 4 upgrade
---
 .sdkmanrc                                                    |  2 +-
 build-logic/docs-core/build.gradle                           |  9 ++++-----
 .../src/main/groovy/grails/doc/ant/DocPublisherTask.groovy   |  1 +
 build-logic/gradle/wrapper/gradle-wrapper.properties         |  2 +-
 dependencies.gradle                                          |  2 +-
 gradle.properties                                            |  2 +-
 gradle/wrapper/gradle-wrapper.properties                     |  2 +-
 grails-data-hibernate5/docs/build.gradle                     |  6 +++++-
 grails-data-mongodb/docs/build.gradle                        |  6 +++++-
 grails-data-neo4j/docs/build.gradle                          | 12 ++++++++----
 grails-gradle/bom/build.gradle                               |  5 +++--
 grails-gradle/common/build.gradle                            |  6 +++---
 grails-gradle/gradle/wrapper/gradle-wrapper.properties       |  2 +-
 grails-gradle/model/build.gradle                             | 12 ++++++------
 .../model/src/test/groovy/grails/io/IOUtilsSpec.groovy       |  2 +-
 grails-gradle/plugins/build.gradle                           |  3 +--
 .../plugin/commands/ApplicationContextCommandTask.groovy     |  9 ++++++++-
 .../plugin/commands/ApplicationContextScriptTask.groovy      |  5 ++++-
 .../gradle/plugin/profiles/tasks/ProfileCompilerTask.groovy  |  2 +-
 .../groovy/org/grails/gradle/plugin/run/GrailsRunTask.groovy |  2 +-
 .../gradle/plugin/views/json/GsonViewCompilerTask.groovy     |  2 +-
 .../gradle/plugin/views/markup/MarkupViewCompilerTask.groovy |  2 +-
 .../base/skeleton/gradle/wrapper/gradle-wrapper.properties   |  2 +-
 .../skeleton/gradle/wrapper/gradle-wrapper.properties        |  2 +-
 24 files changed, 61 insertions(+), 39 deletions(-)

diff --git a/.sdkmanrc b/.sdkmanrc
index 8e35cc0173..7f5dd3018e 100644
--- a/.sdkmanrc
+++ b/.sdkmanrc
@@ -2,5 +2,5 @@
 java=17.0.18-librca
 # Keep gradle version synced with gradle.properties (gradleToolingApiVersion), 
all gradle-wrapper.properties files,
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
-gradle=8.14.4
+gradle=9.3.1
 
diff --git a/build-logic/docs-core/build.gradle 
b/build-logic/docs-core/build.gradle
index 856409ccdf..216b1da3ec 100644
--- a/build-logic/docs-core/build.gradle
+++ b/build-logic/docs-core/build.gradle
@@ -38,10 +38,9 @@ apply {
 dependencies {
     gradleConf gradleApi()
 
-    // grails-docs classes are used in Gradle builds,
-    // so we must compile with Groovy 3 until Gradle upgrades to Groovy 4.
-    compileOnly "org.codehaus.groovy:groovy:${GroovySystem.version}"
-    compileOnly "org.codehaus.groovy:groovy-ant:${GroovySystem.version}"
+    // grails-docs classes are used in Gradle builds, using Gradle's embedded 
Groovy version
+    compileOnly "org.apache.groovy:groovy:${GroovySystem.version}"
+    compileOnly "org.apache.groovy:groovy-ant:${GroovySystem.version}"
 
     api 
"org.apache.commons:commons-text:${gradleBomDependencyVersions['commons-text.version']}"
     api "org.apache.ant:ant:${gradleBomDependencyVersions['ant.version']}"
@@ -56,7 +55,7 @@ dependencies {
         transitive = false
     }
 
-    testImplementation 
"org.codehaus.groovy:groovy-test-junit5:${GroovySystem.version}"
+    testImplementation 
"org.apache.groovy:groovy-test-junit5:${GroovySystem.version}"
     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.12.2'
     testImplementation 'org.junit.platform:junit-platform-runner:1.12.2'
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.2'
diff --git 
a/build-logic/docs-core/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy 
b/build-logic/docs-core/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
index 42f63eb898..2195fe1003 100644
--- 
a/build-logic/docs-core/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
+++ 
b/build-logic/docs-core/src/main/groovy/grails/doc/ant/DocPublisherTask.groovy
@@ -18,6 +18,7 @@
  */
 package grails.doc.ant
 
+import groovy.ant.AntBuilder
 import org.apache.tools.ant.BuildException
 import org.apache.tools.ant.Project
 import org.apache.tools.ant.Task
diff --git a/build-logic/gradle/wrapper/gradle-wrapper.properties 
b/build-logic/gradle/wrapper/gradle-wrapper.properties
index 7712f940a2..5012f38a99 100644
--- a/build-logic/gradle/wrapper/gradle-wrapper.properties
+++ b/build-logic/gradle/wrapper/gradle-wrapper.properties
@@ -2,7 +2,7 @@
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/dependencies.gradle b/dependencies.gradle
index c87f4af529..2d9c6ae860 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -29,7 +29,7 @@ ext {
             'byte-buddy.version'            : '1.17.7',
             'commons-text.version'          : '1.13.1',
             'directory-watcher.version'     : '0.19.1',
-            'gradle-spock.version'          : '2.3-groovy-3.0',
+            'gradle-spock.version'          : '2.3-groovy-4.0',
             'grails-publish-plugin.version' : '0.0.4',
             'jansi.version'                 : '1.18',
             'javaparser-core.version'       : '3.27.0',
diff --git a/gradle.properties b/gradle.properties
index 131585208f..074654fa5f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -34,7 +34,7 @@ expectitCoreVersion=0.9.0
 gparsVersion=1.2.1
 # Keep gradle version synced with .sdkmanrc, all gradle-wrapper.properties 
files,
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
-gradleToolingApiVersion=8.14.4
+gradleToolingApiVersion=9.3.1
 hibernate5Version=5.6.15.Final
 javassistVersion=3.30.2-GA
 jnrPosixVersion=3.1.20
diff --git a/gradle/wrapper/gradle-wrapper.properties 
b/gradle/wrapper/gradle-wrapper.properties
index 7712f940a2..5012f38a99 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -2,7 +2,7 @@
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/grails-data-hibernate5/docs/build.gradle 
b/grails-data-hibernate5/docs/build.gradle
index aed5772187..8f2bed53a1 100644
--- a/grails-data-hibernate5/docs/build.gradle
+++ b/grails-data-hibernate5/docs/build.gradle
@@ -33,8 +33,12 @@ ext {
 
 configurations {
     documentation {
+        canBeConsumed = false
+        canBeResolved = true
         attributes {
-            attribute(Bundling.BUNDLING_ATTRIBUTE, (Bundling) 
(objects.named(Bundling, 'external')))
+            attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, 
Category.LIBRARY))
+            attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, 
Bundling.EXTERNAL))
+            attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, 
Usage.JAVA_RUNTIME))
         }
     }
 }
diff --git a/grails-data-mongodb/docs/build.gradle 
b/grails-data-mongodb/docs/build.gradle
index 89cfce4530..d51714c4ee 100644
--- a/grails-data-mongodb/docs/build.gradle
+++ b/grails-data-mongodb/docs/build.gradle
@@ -33,8 +33,12 @@ ext {
 
 configurations {
     documentation {
+        canBeConsumed = false
+        canBeResolved = true
         attributes {
-            attribute(Bundling.BUNDLING_ATTRIBUTE, (Bundling) 
(objects.named(Bundling, 'external')))
+            attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, 
Category.LIBRARY))
+            attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, 
Bundling.EXTERNAL))
+            attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, 
Usage.JAVA_RUNTIME))
         }
     }
 }
diff --git a/grails-data-neo4j/docs/build.gradle 
b/grails-data-neo4j/docs/build.gradle
index 783d22faa2..2cec032f48 100644
--- a/grails-data-neo4j/docs/build.gradle
+++ b/grails-data-neo4j/docs/build.gradle
@@ -38,17 +38,21 @@ apply plugin: 'org.asciidoctor.jvm.convert'
 
 configurations {
     documentation {
+        canBeConsumed = false
+        canBeResolved = true
         attributes {
-            attribute(Bundling.BUNDLING_ATTRIBUTE, (Bundling) 
(objects.named(Bundling, 'external')))
+            attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, 
Category.LIBRARY))
+            attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, 
Bundling.EXTERNAL))
+            attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, 
Usage.JAVA_RUNTIME))
         }
     }
 }
 
 dependencies {
     documentation "org.fusesource.jansi:jansi:$jansiVersion"
-    documentation "org.codehaus.groovy:groovy"
-    documentation "org.codehaus.groovy:groovy-templates"
-    documentation "org.codehaus.groovy:groovy-dateutil"
+    documentation "org.apache.groovy:groovy"
+    documentation "org.apache.groovy:groovy-templates"
+    documentation "org.apache.groovy:groovy-dateutil"
     documentation 
"com.github.javaparser:javaparser-core:$javaParserCoreVersion"
     for (p in coreProjects) {
         documentation "org.apache.grails:grails-datastore-$p:$datastoreVersion"
diff --git a/grails-gradle/bom/build.gradle b/grails-gradle/bom/build.gradle
index d2298cb59e..9be9eb6f28 100644
--- a/grails-gradle/bom/build.gradle
+++ b/grails-gradle/bom/build.gradle
@@ -43,8 +43,9 @@ dependencies {
         exclude group: 'com.fasterxml.jackson'
     }
 
-    // Because gradle uses groovy 3, we must use groovy 3 compatible versions 
for the grails-gradle-bom
-    api platform("org.codehaus.groovy:groovy-bom:${GroovySystem.version}")
+    // Use Gradle's embedded Groovy version for the grails-gradle-bom
+    // Groovy 4+ uses org.apache.groovy coordinates
+    api platform("org.apache.groovy:groovy-bom:${GroovySystem.version}")
     api platform(gradleBomPlatformDependencies['gradle-spock-bom'])
 
     constraints {
diff --git a/grails-gradle/common/build.gradle 
b/grails-gradle/common/build.gradle
index 7262486f44..4c54b6af93 100644
--- a/grails-gradle/common/build.gradle
+++ b/grails-gradle/common/build.gradle
@@ -37,14 +37,14 @@ dependencies {
     compileOnly platform(project(':grails-gradle-bom'))
 
     // compile with the Groovy version provided by Gradle
-    // to ensure build compatibility with Gradle, currently Groovy 3.0.x
+    // Groovy 4+ uses org.apache.groovy coordinates
     // see: https://docs.gradle.org/current/userguide/compatibility.html#groovy
-    compileOnly 'org.codehaus.groovy:groovy'
+    compileOnly 'org.apache.groovy:groovy'
 
     testImplementation platform(project(':grails-gradle-bom'))
     testImplementation 'org.slf4j:slf4j-simple'
     testImplementation('org.spockframework:spock-core') { transitive = false }
-    testImplementation 'org.codehaus.groovy:groovy-test-junit5'
+    testImplementation 'org.apache.groovy:groovy-test-junit5'
     // for easier setting of environment variables in tests
     testImplementation 'uk.org.webcompere:system-stubs-core:2.1.8'
 
diff --git a/grails-gradle/gradle/wrapper/gradle-wrapper.properties 
b/grails-gradle/gradle/wrapper/gradle-wrapper.properties
index 7712f940a2..5012f38a99 100644
--- a/grails-gradle/gradle/wrapper/gradle-wrapper.properties
+++ b/grails-gradle/gradle/wrapper/gradle-wrapper.properties
@@ -2,7 +2,7 @@
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/grails-gradle/model/build.gradle b/grails-gradle/model/build.gradle
index 7df57487ca..695a9fe624 100644
--- a/grails-gradle/model/build.gradle
+++ b/grails-gradle/model/build.gradle
@@ -41,13 +41,13 @@ dependencies {
     implementation platform(project(':grails-gradle-bom'))
 
     // compile grails-gradle-model with the Groovy version provided by Gradle
-    // to ensure build compatibility with Gradle, currently Groovy 3.0.x
+    // Groovy 4+ uses org.apache.groovy coordinates
     // when used by grails-gradle-plugin
     // see: https://docs.gradle.org/current/userguide/compatibility.html#groovy
-    compileOnly 'org.codehaus.groovy:groovy'
-    compileOnly 'org.codehaus.groovy:groovy-xml'
+    compileOnly 'org.apache.groovy:groovy'
+    compileOnly 'org.apache.groovy:groovy-xml'
 
-    testImplementation 'org.codehaus.groovy:groovy-test-junit5'
+    testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-runner'
 
@@ -67,8 +67,8 @@ dependencies {
     api 'org.slf4j:jcl-over-slf4j'
 
     // Testing
-    testImplementation 'org.codehaus.groovy:groovy'
-    testImplementation 'org.codehaus.groovy:groovy-xml'
+    testImplementation 'org.apache.groovy:groovy'
+    testImplementation 'org.apache.groovy:groovy-xml'
     testImplementation 'org.slf4j:slf4j-simple'
     testImplementation('org.spockframework:spock-core') {
         transitive = false
diff --git a/grails-gradle/model/src/test/groovy/grails/io/IOUtilsSpec.groovy 
b/grails-gradle/model/src/test/groovy/grails/io/IOUtilsSpec.groovy
index 61a2f5dca7..24dec7ccac 100644
--- a/grails-gradle/model/src/test/groovy/grails/io/IOUtilsSpec.groovy
+++ b/grails-gradle/model/src/test/groovy/grails/io/IOUtilsSpec.groovy
@@ -32,7 +32,7 @@ class IOUtilsSpec extends Specification {
     void "Test findJarResource finds a JAR resource"() {
         expect:
         IOUtils.findJarResource(Specification)
-        
IOUtils.findJarResource(Specification).path.endsWith('spock-core-2.3-groovy-3.0.jar!/')
+        
IOUtils.findJarResource(Specification).path.endsWith('spock-core-2.3-groovy-4.0.jar!/')
     }
 
     void 'findRootResourcesURL - appends / if not present'() {
diff --git a/grails-gradle/plugins/build.gradle 
b/grails-gradle/plugins/build.gradle
index 3772fe07f3..e98979af87 100644
--- a/grails-gradle/plugins/build.gradle
+++ b/grails-gradle/plugins/build.gradle
@@ -40,9 +40,8 @@ dependencies {
     implementation platform(project(':grails-gradle-bom'))
 
     // compile grails-gradle-plugin with the Groovy version provided by Gradle
-    // to ensure build compatibility with Gradle, currently Groovy 3.0.x
     // see: https://docs.gradle.org/current/userguide/compatibility.html#groovy
-    compileOnly "org.codehaus.groovy:groovy"
+    compileOnly "org.apache.groovy:groovy"
 
     implementation project(':grails-gradle-common')
     implementation project(':grails-gradle-tasks')
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextCommandTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextCommandTask.groovy
index ae1e2a8b01..3fae551222 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextCommandTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextCommandTask.groovy
@@ -20,7 +20,13 @@ package org.grails.gradle.plugin.commands
 
 import groovy.transform.CompileStatic
 
+import org.gradle.api.model.ObjectFactory
+import org.gradle.api.provider.ProviderFactory
 import org.gradle.api.tasks.JavaExec
+import org.gradle.jvm.toolchain.JavaToolchainService
+import org.gradle.process.internal.ExecActionFactory
+
+import javax.inject.Inject
 
 /**
  *
@@ -29,8 +35,9 @@ import org.gradle.api.tasks.JavaExec
  * @since 3.0
  */
 @CompileStatic
-class ApplicationContextCommandTask extends JavaExec {
+abstract class ApplicationContextCommandTask extends JavaExec {
 
+    @Inject
     ApplicationContextCommandTask() {
         
mainClass.set('grails.ui.command.GrailsApplicationContextCommandRunner')
         dependsOn('classes', 'findMainClass')
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextScriptTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextScriptTask.groovy
index 5bd5207d8c..9cbda9b09f 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextScriptTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/ApplicationContextScriptTask.groovy
@@ -22,9 +22,12 @@ import groovy.transform.CompileStatic
 
 import org.gradle.api.tasks.JavaExec
 
+import javax.inject.Inject
+
 @CompileStatic
-class ApplicationContextScriptTask extends JavaExec {
+abstract class ApplicationContextScriptTask extends JavaExec {
 
+    @Inject
     ApplicationContextScriptTask() {
         mainClass.set('grails.ui.script.GrailsApplicationScriptRunner')
         dependsOn('classes', 'findMainClass')
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/profiles/tasks/ProfileCompilerTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/profiles/tasks/ProfileCompilerTask.groovy
index 354917d36e..1cb990f892 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/profiles/tasks/ProfileCompilerTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/profiles/tasks/ProfileCompilerTask.groovy
@@ -67,7 +67,7 @@ import 
org.grails.gradle.plugin.profiles.GrailsProfileGradlePlugin
  */
 @CompileStatic
 @CacheableTask
-class ProfileCompilerTask extends AbstractCompile {
+abstract class ProfileCompilerTask extends AbstractCompile {
 
     public static final String DEFAULT_COMPATIBILITY = 
JavaVersion.VERSION_17.majorVersion
     public static final String PROFILE_NAME = 'name'
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/run/GrailsRunTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/run/GrailsRunTask.groovy
index 19f7d93684..8bc12581b5 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/run/GrailsRunTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/run/GrailsRunTask.groovy
@@ -29,4 +29,4 @@ import org.gradle.api.tasks.JavaExec
  * @since 3.2
  */
 @CompileStatic
-class GrailsRunTask extends JavaExec {}
+abstract class GrailsRunTask extends JavaExec {}
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/json/GsonViewCompilerTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/json/GsonViewCompilerTask.groovy
index fe77a1a3f0..5ffa1b4fd5 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/json/GsonViewCompilerTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/json/GsonViewCompilerTask.groovy
@@ -36,7 +36,7 @@ import 
org.grails.gradle.plugin.views.AbstractGroovyTemplateCompileTask
  */
 @CompileStatic
 @CacheableTask
-class GsonViewCompilerTask extends AbstractGroovyTemplateCompileTask {
+abstract class GsonViewCompilerTask extends AbstractGroovyTemplateCompileTask {
 
     @Inject
     GsonViewCompilerTask(ExecOperations execOperations, ObjectFactory 
objectFactory) {
diff --git 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/markup/MarkupViewCompilerTask.groovy
 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/markup/MarkupViewCompilerTask.groovy
index 26d1345807..b10bbc9c44 100644
--- 
a/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/markup/MarkupViewCompilerTask.groovy
+++ 
b/grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/markup/MarkupViewCompilerTask.groovy
@@ -39,7 +39,7 @@ import 
org.grails.gradle.plugin.views.AbstractGroovyTemplateCompileTask
  */
 @CompileStatic
 @CacheableTask
-class MarkupViewCompilerTask extends AbstractGroovyTemplateCompileTask {
+abstract class MarkupViewCompilerTask extends 
AbstractGroovyTemplateCompileTask {
 
     @Input
     final Property<String> fileExtension
diff --git 
a/grails-profiles/base/skeleton/gradle/wrapper/gradle-wrapper.properties 
b/grails-profiles/base/skeleton/gradle/wrapper/gradle-wrapper.properties
index 7712f940a2..5012f38a99 100644
--- a/grails-profiles/base/skeleton/gradle/wrapper/gradle-wrapper.properties
+++ b/grails-profiles/base/skeleton/gradle/wrapper/gradle-wrapper.properties
@@ -2,7 +2,7 @@
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git 
a/grails-profiles/profile/skeleton/gradle/wrapper/gradle-wrapper.properties 
b/grails-profiles/profile/skeleton/gradle/wrapper/gradle-wrapper.properties
index 7712f940a2..5012f38a99 100644
--- a/grails-profiles/profile/skeleton/gradle/wrapper/gradle-wrapper.properties
+++ b/grails-profiles/profile/skeleton/gradle/wrapper/gradle-wrapper.properties
@@ -2,7 +2,7 @@
 # and 
grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME

Reply via email to