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

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

commit 415882c77eb9bbda730fc92b786970f38897ad5c
Author: James Fredley <[email protected]>
AuthorDate: Sat Jan 24 17:19:02 2026 -0500

    Add syncGradleWrapperVersion task to consolidate Gradle version updates
---
 build.gradle      | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 gradle.properties |  5 +++-
 2 files changed, 80 insertions(+), 2 deletions(-)

diff --git a/build.gradle b/build.gradle
index 2338d4bac6..ea8072069c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -88,4 +88,79 @@ apply {
 //            logger.lifecycle("\t- ${dep}")
 //        }
 //    }
-//}
\ No newline at end of file
+//}
+
+// Configure wrapper task to use gradleVersion property
+wrapper {
+    gradleVersion = project.property('gradleVersion')
+}
+
+/**
+ * Task to synchronize Gradle wrapper version across all locations in the 
monorepo.
+ *
+ * When upgrading Gradle, update gradleVersion in gradle.properties and run:
+ *   ./gradlew syncGradleWrapperVersion
+ *
+ * This updates:
+ * - Root and composite build wrapper files
+ * - Profile skeleton wrappers
+ * - Forge template
+ * - .sdkmanrc
+ */
+tasks.register('syncGradleWrapperVersion') {
+    group = 'build setup'
+    description = 'Synchronizes Gradle wrapper version across all locations 
from gradleVersion property'
+
+    doLast {
+        def version = project.property('gradleVersion')
+        def updatedFiles = []
+
+        // Pattern to match gradle version in distributionUrl
+        def versionPattern = ~/gradle-[\d.]+(-\w+)?-bin\.zip/
+        def newVersionString = "gradle-${version}-bin.zip"
+
+        // Find all gradle-wrapper.properties files (excluding test resources 
and build outputs)
+        fileTree(rootDir) {
+            include '**/gradle/wrapper/gradle-wrapper.properties'
+            exclude '**/build/**'  // Exclude build output directories
+            exclude '**/grails-shell-cli/src/test/**'  // Test fixture with 
intentionally old version
+        }.each { File file ->
+            def content = file.text
+            def newContent = content.replaceAll(versionPattern, 
newVersionString)
+            if (content != newContent) {
+                file.text = newContent
+                updatedFiles << 
rootDir.toPath().relativize(file.toPath()).toString()
+            }
+        }
+
+        // Update Forge rocker template
+        def forgeTemplate = 
file('grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw')
+        if (forgeTemplate.exists()) {
+            def content = forgeTemplate.text
+            def newContent = content.replaceAll(versionPattern, 
newVersionString)
+            if (content != newContent) {
+                forgeTemplate.text = newContent
+                updatedFiles << 
rootDir.toPath().relativize(forgeTemplate.toPath()).toString()
+            }
+        }
+
+        // Update .sdkmanrc
+        def sdkmanrc = file('.sdkmanrc')
+        if (sdkmanrc.exists()) {
+            def content = sdkmanrc.text
+            def sdkmanPattern = ~/gradle=[\d.]+(-\w+)?/
+            def newContent = content.replaceAll(sdkmanPattern, 
"gradle=${version}")
+            if (content != newContent) {
+                sdkmanrc.text = newContent
+                updatedFiles << '.sdkmanrc'
+            }
+        }
+
+        if (updatedFiles) {
+            logger.lifecycle("Updated Gradle version to ${version} in 
${updatedFiles.size()} files:")
+            updatedFiles.each { logger.lifecycle("  - ${it}") }
+        } else {
+            logger.lifecycle("All files already have Gradle version 
${version}")
+        }
+    }
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 54be24387c..f963bcec56 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -32,7 +32,10 @@ defaultElImplementationVersion=5.0.0
 elApiVersion=5.0.1
 expectitCoreVersion=0.9.0
 gparsVersion=1.2.1
-gradleToolingApiVersion=8.14.3
+# Gradle version - used by wrapper task and syncGradleWrapperVersion task
+# When updating, run: ./gradlew syncGradleWrapperVersion
+gradleVersion=8.14.4
+gradleToolingApiVersion=8.14.4
 hibernate5Version=5.6.15.Final
 javassistVersion=3.30.2-GA
 jnrPosixVersion=3.1.20

Reply via email to