2.5+ specific tweak
diff --git a/gradle/phase1.gradle b/gradle/phase1.gradle
index ba2990d..bc220b7 100644
--- a/gradle/phase1.gradle
+++ b/gradle/phase1.gradle
@@ -151,7 +151,9 @@
     if (project.hasProperty('useAntlr4')) {
         theArgs << "-PuseAntlr4=${getProperty('useAntlr4')}"
     }
-    theArgs << '--no-build-cache'
+    if (!relVersion.startsWith('2.4')) {
+        theArgs << '--no-build-cache'
+    }
     theArgs << "-PartifactoryContext=https://groovy.jfrog.io/groovy/" // apache-groovy for Groovy 4
     theArgs << "-PartifactoryRepoKey=${releaseBuild ? 'libs-release-local' : 'libs-snapshot-local'}"
     if (project.hasProperty('skipPublish')) {
diff --git a/gradle/phase2.gradle b/gradle/phase2.gradle
index 5cfd88d..7cc0a53 100644
--- a/gradle/phase2.gradle
+++ b/gradle/phase2.gradle
@@ -4,6 +4,7 @@
 import at.bxm.gradleplugins.svntools.tasks.SvnCommit
 import at.bxm.gradleplugins.svntools.tasks.SvnDelete
 import groovyx.net.http.RESTClient
+import groovyx.net.http.HttpResponseException
 import org.ajoberstar.grgit.Credentials
 
 import static groovyx.net.http.ContentType.*
@@ -98,7 +99,8 @@
         def build = builds.find {
             resp = artifactory.get(path: 'api/build/groovy/' + it.uri, contentType: JSON)
             assert resp.status == 200
-            def coreModuleId = resp.data.buildInfo.modules*.id.find{ it.startsWith('org.codehaus.groovy:groovy:') }
+//            def coreModuleId = resp.data.buildInfo.modules*.id.find{ it.startsWith('org.codehaus.groovy:groovy:') } // apache
+            def coreModuleId = resp.data.buildInfo.modules*.id.find{ it.startsWith('org.apache.groovy:groovy:') } // apache
             def found = coreModuleId?.endsWith(':' + relVersion)
             println "${found ? 'FOUND' : 'SKIPPING'} $coreModuleId @ ${it.uri}"
             found
@@ -124,8 +126,29 @@
     }
 }
 
-sdkReleaseVersion.dependsOn promoteOnBintray
-
+task waitForBintrayPublication(dependsOn: [promoteOnBintray]) {
+    group = "Post-passed phase"
+    description = "Polls the Bintray website to check if it is released"
+    doLast {
+        def found = false
+        def delay = 30000 // 1/2 a minute
+        def numTries = 60 // wait for up to 30 mins
+        while (!found && numTries-- > 0) {
+            def bintraysite = new RESTClient('https://dl.bintray.com/')
+            def resp = null
+            try {
+                resp = bintraysite.head(path: "groovy/maven/apache-groovy-sdk-${relVersion}.zip")
+            } catch(HttpResponseException ignore) {}
+            if (resp?.status == 200) {
+                found = true
+            } else {
+                sleep delay
+            }
+        }
+        assert found, 'Timed out waiting for bintray publish/sync - please check manually'
+    }
+}
+sdkReleaseVersion.dependsOn waitForBintrayPublication
 
 task synchronizeWithMavenCentral(dependsOn: promoteOnBintray) {
     group = "Post-passed phase"
@@ -136,14 +159,14 @@
 If this fails, log on to https://oss.sonatype.org/ using the centralUser credentials
 and progress through process manually -> Close -> Publish ... under staging repositories
 """
-        def bintray = new RESTClient('https://api.bintray.com/maven_central_sync/groovy/maven/')
+        def bintray = new RESTClient('https://api.bintray.com/maven_central_sync/groovy/maven/') // apache-groovy?
         bintray.headers['Authorization'] = 'Basic ' + "$bintrayUser:$bintrayKey".getBytes('iso-8859-1').encodeBase64()
         def body = /{
             "username" : "${project.findProperty('centralUser')}",
             "password" : "${project.findProperty('centralKey')}"
         }/
         def resp = bintray.post(
-                path: "groovy/versions/$relVersion",
+                path: "groovy/versions/$relVersion", // apache-groovy?
                 body: body,
                 requestContentType: JSON
         )
@@ -163,7 +186,8 @@
         fileTree("$stagingDir/target/distributions").files.each { File f ->
             println "Uploading $f.name"
             def resp = bintray.put(
-                    path: "groovy/$relVersion/${f.name}",
+                    path: "groovy/$relVersion/${f.name}", // apache-groovy?
+//                    path: "apache-groovy/$relVersion/${f.name}", // apache-groovy
                     body: f.bytes,
                     requestContentType: BINARY
             )
@@ -237,7 +261,7 @@
                 execute "rm -rf /var/www/docs/docs/groovy-${relVersion}/"
                 execute "unzip -d /var/www/docs/docs/ /var/www/docs/docs/apache-groovy-docs-${relVersion}.zip"
                 execute "chmod 664 /var/www/docs/docs/apache-groovy-docs-${relVersion}.zip"
-                execute "chgrp -R teamcity /var/www/docs/docs/groovy-${relVersion}/"
+//                execute "chgrp -R teamcity /var/www/docs/docs/groovy-${relVersion}/"
 //                execute "chown -R teamcity /var/www/docs/docs/groovy-${relVersion}/"
                 execute "rm /var/www/docs/docs/apache-groovy-docs-${relVersion}.zip"
             }
@@ -279,8 +303,8 @@
         ssh.run {
             session(remotes.ciServer) {
                 execute 'uname -a'
-                execute "cd /var/www/docs/docs; ln -s -f -T groovy-$relVersion latest"
-                execute "chgrp -h teamcity /var/www/docs/docs/latest"
+                execute "cd /var/www/docs/docs; ln -s -f -T groovy-$relVersion latest; ln -s -f -T groovy-$relVersion groovy-latest"
+//                execute "chgrp -h teamcity /var/www/docs/docs/latest"
 //                execute "chown -h teamcity /var/www/docs/docs/latest"
             }
         }
@@ -367,6 +391,7 @@
             def body = /{ "name": "$nextVersion", "project": "GROOVY", "projectId": $projectId }/
             resp = jira.post(path: "version", body: body, requestContentType: JSON)
             assert resp.status == 201
+            println resp.data.message
         }
     }
 }