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
