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

emilles pushed a commit to branch java25
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 1551e8f541ff89011d1d130d49a4a56ef6da8ef2
Author: Eric Milles <[email protected]>
AuthorDate: Tue Sep 16 14:42:28 2025 -0500

    GROOVY-11732: Gradle 9.0.0 and Java 25 is LTS now (not EA)
---
 .github/workflows/groovy-build-coverage.yml        |   5 +-
 .github/workflows/groovy-build-test.yml            |  53 +++++----------------
 build-logic/build.gradle                           |   2 +-
 .../org.apache.groovy-published-library.gradle     |  35 +++++++-------
 gradle.properties                                  |   2 +-
 gradle/verification-metadata.xml                   |  11 -----
 gradle/wrapper/gradle-wrapper.jar                  | Bin 43583 -> 45457 bytes
 gradle/wrapper/gradle-wrapper.properties           |   2 +-
 gradlew                                            |  11 ++---
 gradlew.bat                                        |   6 +--
 10 files changed, 41 insertions(+), 86 deletions(-)

diff --git a/.github/workflows/groovy-build-coverage.yml 
b/.github/workflows/groovy-build-coverage.yml
index 47ed033f7a..c335b7e686 100644
--- a/.github/workflows/groovy-build-coverage.yml
+++ b/.github/workflows/groovy-build-coverage.yml
@@ -24,9 +24,7 @@ jobs:
   test:
     strategy:
       fail-fast: false
-      matrix:
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
+    runs-on: ubuntu-latest
     env:
       DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
     steps:
@@ -45,4 +43,3 @@ jobs:
         with:
           token: ${{ secrets.CODECOV_TOKEN }}
           verbose: true
-
diff --git a/.github/workflows/groovy-build-test.yml 
b/.github/workflows/groovy-build-test.yml
index e30c47ade5..79b94a90c3 100644
--- a/.github/workflows/groovy-build-test.yml
+++ b/.github/workflows/groovy-build-test.yml
@@ -28,19 +28,20 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [ubuntu-latest]
-        java: [17, 21]
-    runs-on: ${{ matrix.os }}
+        java: [17, 21, 25]
+    runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v5
       - uses: actions/setup-java@v5
         with:
           distribution: 'zulu'
-          java-version: ${{ matrix.java }}
+          java-version: |
+            ${{ matrix.java }}
+            21
           check-latest: true
       - uses: gradle/actions/setup-gradle@v4
       - name: Test with Gradle
-        run: ./gradlew test
+        run: ./gradlew test -Ptarget.java.home="$JAVA_HOME_${{ matrix.java 
}}_X64"
         timeout-minutes: 60
       - name: Upload reports
         uses: actions/upload-artifact@v4
@@ -50,53 +51,21 @@ jobs:
           path: '**/build/reports/'
 
   additional:
-    #if: github.event_name == 'push'
     strategy:
       fail-fast: false
       matrix:
-        os: [ubuntu-latest]
         java: [18, 19, 20, 22, 23, 24]
-    runs-on: ${{ matrix.os }}
+    runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v5
       - uses: actions/setup-java@v5
         with:
           distribution: 'zulu'
-          java-version: ${{ matrix.java }}
+          java-version: |
+            ${{ matrix.java }}
+            21
           check-latest: true
       - uses: gradle/actions/setup-gradle@v4
       - name: Test with Gradle
-        run: ./gradlew test
+        run: ./gradlew test -Ptarget.java.home="$JAVA_HOME_${{ matrix.java 
}}_X64"
         timeout-minutes: 60
-
-  ea:
-    #if: github.event_name == 'push'
-    strategy:
-      fail-fast: false
-      matrix:
-        os: [ubuntu-latest]
-        # The jdk links of "install-jdk.sh" are sometimes outdated, so we have 
to download openjdk releases from https://jdk.java.net/ by ourselves.
-        jdk:
-          - 
"https://download.java.net/java/early_access/jdk25/15/GPL/openjdk-25-ea+15_linux-x64_bin.tar.gz";
-    runs-on: ${{ matrix.os }}
-    steps:
-      - name: Download JDK ${{ matrix.jdk }}
-        run: wget -c ${{ matrix.jdk }} -O /tmp/openjdk.tar.gz
-      - name: Set up JDK ${{ matrix.jdk }}
-        run: mkdir -p /home/runner/openjdk && tar -xvf /tmp/openjdk.tar.gz -C 
/home/runner/openjdk && chmod -R 755 /home/runner/openjdk && mv 
/home/runner/openjdk/jdk*/* /home/runner/openjdk/
-      - uses: actions/checkout@v5
-      - uses: actions/setup-java@v5
-        with:
-          distribution: 'zulu'
-          java-version: 21
-          check-latest: true
-      - uses: gradle/actions/setup-gradle@v4
-      - name: Test with Gradle
-        run: ./gradlew test -Ptarget.java.home=/home/runner/openjdk
-        timeout-minutes: 60
-      - name: Upload reports
-        uses: actions/upload-artifact@v4
-        if: always()
-        with:
-          name: build-reports-ea
-          path: '**/build/reports/'
diff --git a/build-logic/build.gradle b/build-logic/build.gradle
index 857be2414e..3ba08cd365 100644
--- a/build-logic/build.gradle
+++ b/build-logic/build.gradle
@@ -33,7 +33,7 @@ dependencies {
     implementation 'org.nosphere.apache:creadur-rat-gradle:0.8.1'
     implementation 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.2.4'
     implementation 'me.champeau.jmh:jmh-gradle-plugin:0.7.2'
-    implementation 'org.cyclonedx:cyclonedx-gradle-plugin:1.10.0'
+    implementation 'org.cyclonedx:cyclonedx-gradle-plugin:2.4.0'
     implementation 'org.apache.maven:maven-core:3.9.11'
 }
 
diff --git 
a/build-logic/src/main/groovy/org.apache.groovy-published-library.gradle 
b/build-logic/src/main/groovy/org.apache.groovy-published-library.gradle
index eef00341f3..cccb53c6a6 100644
--- a/build-logic/src/main/groovy/org.apache.groovy-published-library.gradle
+++ b/build-logic/src/main/groovy/org.apache.groovy-published-library.gradle
@@ -17,10 +17,10 @@ if (pluginManager.hasPlugin('java-platform')) {
 
 afterEvaluate {
     def bomTask = tasks.cyclonedxBom
-    def bomFile = new File(bomTask.outputs.files.singleFile, 
"${bomTask.outputName.get()}.${bomTask.outputFormat.get()}")
+    def bomFile = file(bomTask.jsonOutput.get())
     def mavenPublish = extensions.findByName(PublishingExtension.NAME) as 
PublishingExtension
     mavenPublish?.publications.each {
-        it.artifact(bomFile) { classifier = "cyclonedx" }
+        it.artifact(bomFile) { classifier = 'cyclonedx' }
     }
     tasks.matching { it.group == PublishingExtension.NAME }.configureEach { 
dependsOn(bomTask) }
 }
@@ -28,11 +28,11 @@ afterEvaluate {
 publishing {
     repositories {
         maven {
-            name = "LocalFile"
-            url = 
rootProject.layout.buildDirectory.dir("repo").get().asFile.absolutePath
+            name = 'LocalFile'
+            url = 
rootProject.layout.buildDirectory.dir('repo').get().asFile.absolutePath
         }
         maven {
-            name = "Apache"
+            name = 'Apache'
             url = findProperty('groovyVersion').contains('SNAPSHOT')
                     ? 
'https://repository.apache.org/content/repositories/snapshots'
                     : 
'https://repository.apache.org/service/local/staging/deploy/maven2'
@@ -808,8 +808,8 @@ gradle.taskGraph.whenReady { taskGraph ->
     if (sharedConfiguration.signing.shouldSign(gradle.taskGraph)) {
         // Use Java 6's console or Swing to read input (not suitable for CI)
         if (!sharedConfiguration.signing.hasAllKeyDetails()) {
-            printf "\n\nWe have to sign some things in this build." +
-                    "\n\nPlease enter your signing details.\n\n"
+            printf '\n\nWe have to sign some things in this build.' +
+                    '\n\nPlease enter your signing details.\n\n'
             System.out.flush()
 
             if (!sharedConfiguration.signing.keyId.present) {
@@ -823,23 +823,22 @@ gradle.taskGraph.whenReady { taskGraph ->
             }
 
             allprojects {
-                project.properties.put("signing.keyId", 
sharedConfiguration.signing.keyId.get())
-                project.properties.put("signing.secretKeyRingFile", 
sharedConfiguration.signing.secretKeyRingFile.get())
-                project.properties.put("signing.password", 
sharedConfiguration.signing.password.get())
+                project.properties.put('signing.keyId', 
sharedConfiguration.signing.keyId.get())
+                project.properties.put('signing.secretKeyRingFile', 
sharedConfiguration.signing.secretKeyRingFile.get())
+                project.properties.put('signing.password', 
sharedConfiguration.signing.password.get())
             }
 
-            printf "\nThanks.\n\n"
+            printf '\nThanks.\n\n'
             System.out.flush()
         }
     }
 }
 
-def promptUser(String prompt) {
+String promptUser(String prompt) {
     def response = ''
     if (System.console() != null) {
-        response = new String(System.console().readPassword("\n$prompt: "))
+        response = String.valueOf(System.console().readPassword("\n$prompt: "))
     }
-
     if (!response) {
         throw new InvalidUserDataException("Null response detected!")
     }
@@ -848,9 +847,11 @@ def promptUser(String prompt) {
 
 cyclonedxBom {
     includeConfigs = ['runtimeClasspath']
-    skipConfigs = ['compileClasspath', 'testCompileClasspath', 'detached.*']
-    outputName = "cyclonedx"
-    outputFormat = 'json'
+       skipConfigs = ['compileClasspath', 'detached.*', 'test.*']
+
     includeLicenseText = false
     includeMetadataResolution = false
+
+    xmlOutput.unsetConvention()
+    jsonOutput.set(file("build/reports/cyclonedx/${project.name}.json"))
 }
diff --git a/gradle.properties b/gradle.properties
index 642556138c..96aee2c7fd 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -21,7 +21,7 @@ groovyTargetBytecodeVersion=17
 targetJavaVersion=17
 
 binaryCompatibilityBaseline=5.0.0
-gradle_version=8.14.3
+gradle_version=9.0.0
 
 groovyJUnit_ms=512m
 groovyJUnit_mx=2g
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 157bc70d9e..7083cbd473 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -1320,17 +1320,6 @@
             <pgp value="851264C36365D4FF9427625F38362FD5CFA2668B"/>
          </artifact>
       </component>
-      <component group="org.cyclonedx" name="cyclonedx-core-java" 
version="9.0.5">
-         <artifact name="cyclonedx-core-java-9.0.5.jar">
-            <pgp value="5D283C23D9D9DC2D9C2130E6AADF2C18DCF95764"/>
-            <sha512 
value="f1bfda4b731415cb8aee80305f649e21ba325b9595035f73fa6d13358bbc21685089b616300042c66b5860d92b1025bb2ed190f8106a437ed9a613dfce5b5204"
 origin="Generated by Gradle" reason="A key couldn't be downloaded"/>
-         </artifact>
-      </component>
-      <component group="org.cyclonedx" name="cyclonedx-gradle-plugin" 
version="1.10.0">
-         <artifact name="cyclonedx-gradle-plugin-1.10.0.jar">
-            <sha512 
value="2632a17252f6a0ea7efd2531a61bdf2fff865b77162b1087d14f108f4df95a232886a72ad4f5f1f940c8993d7ee6ce5256398d8cd74b5a0d51ea8e80df183322"
 origin="Generated by Gradle" reason="Artifact is not signed"/>
-         </artifact>
-      </component>
       <component group="org.dom4j" name="dom4j" version="2.2.0">
          <artifact name="dom4j-2.2.0.jar">
             <pgp value="8F9A3C6D105B9F57844A721D79E193516BE7998F"/>
diff --git a/gradle/wrapper/gradle-wrapper.jar 
b/gradle/wrapper/gradle-wrapper.jar
index a4b76b9530..8bdaf60c75 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and 
b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties 
b/gradle/wrapper/gradle-wrapper.properties
index d4081da476..2a84e188b8 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index f5feea6d6b..2152a776c4 100755
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# Copyright © 2015-2021 the original authors.
+# Copyright © 2015-2025 the original authors.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -86,8 +86,7 @@ done
 # shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
 # Discard cd standard output in case $CDPATH is set 
(https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
-' "$PWD" ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || 
exit
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD=maximum
@@ -115,7 +114,7 @@ case "$( uname )" in                #(
   NONSTOP* )        nonstop=true ;;
 esac
 
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
 
 
 # Determine the Java command to use to start the JVM.
@@ -206,7 +205,7 @@ fi
 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 
 # Collect all arguments for the java command:
-#   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not 
allowed to contain shell fragments,
+#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to 
contain shell fragments,
 #     and any embedded shellness will be escaped.
 #   * For example: A user cannot expect ${Hostname} to be expanded, as it is 
an environment variable and will be
 #     treated as '${Hostname}' itself on the command line.
@@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 set -- \
         "-Dorg.gradle.appname=$APP_BASE_NAME" \
         -classpath "$CLASSPATH" \
-        org.gradle.wrapper.GradleWrapperMain \
+        -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
         "$@"
 
 # Stop when "xargs" is not available.
diff --git a/gradlew.bat b/gradlew.bat
index 9d21a21834..90d0b0f8e6 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,5 +1,5 @@
 @rem
-@rem Copyright 2015 the original author or authors.
+@rem Copyright 2015-2025 the original author or authors.
 @rem
 @rem Licensed under the Apache License, Version 2.0 (the "License");
 @rem you may not use this file except in compliance with the License.
@@ -70,11 +70,11 @@ goto fail
 :execute
 @rem Setup the command line
 
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
 
 
 @rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% 
"-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" 
org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% 
"-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar 
"%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
 
 :end
 @rem End local scope for the variables with windows NT shell

Reply via email to