Skip to content

build(java): align toolchain and runtime to Java 25 (bytecode 17)#83

Open
cristianrcv wants to merge 6 commits into
masterfrom
feat/NOTASK-align-java-25
Open

build(java): align toolchain and runtime to Java 25 (bytecode 17)#83
cristianrcv wants to merge 6 commits into
masterfrom
feat/NOTASK-align-java-25

Conversation

@cristianrcv

Copy link
Copy Markdown
Contributor

Summary

Aligns this repository with the proposed org-wide Java 25 standard (implements https://github.com/seqeralabs/adr/pull/48). Java 25 is adopted as the build toolchain and runtime, while the language level and bytecode target remain at Java 17.

What changed

  • buildSrc convention plugins — bumped the Gradle Java toolchain from JavaLanguageVersion.of(21) to of(25) in all three convention files:
    • io.seqera.java-library-conventions.gradle
    • io.seqera.java-test-fixtures-conventions.gradle
    • io.seqera.groovy-common-conventions.gradle
  • .github/workflows/build.yml — CI build matrix java_version: [21] -> [25].
  • sourceCompatibility / targetCompatibility left at 17 in all convention files (bytecode target unchanged).
  • .github/workflows/generate-submit-dependencies.yml left at java-version: 17 (dependency-submission job, unchanged).

Why

Follows the proposed org-wide standard in the Java 25 ADR (seqeralabs/adr#48), which supersedes the 2024-12-03 Java 17/21 ADR. Building and running on the latest LTS while keeping the bytecode target at Java 17 preserves runtime compatibility for consumers.

How to verify

  • ./gradlew check and ./gradlew assemble build with a Java 25 toolchain.
  • Compiled classes still target bytecode 17 (e.g. javap -v reports major version 61 / class file version 61.0).
  • CI build.yml runs on Java 25.

🤖 Generated with Claude Code

cristianrcv and others added 2 commits July 8, 2026 14:56
Adopt Java 25 as the build toolchain and runtime (Gradle toolchain and
CI workflows) while keeping the language level and bytecode target at
Java 17.

Follows the proposed org-wide standard in the Java 25 ADR
(seqeralabs/adr#48), which supersedes the 2024-12-03 Java 17/21 ADR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
Switch the CI setup-java JDK distribution from Temurin to Amazon
Corretto, following the Java 25 ADR (seqeralabs/adr#48), which
specifies Amazon Corretto as the preferred distribution for Linux.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
@cristianrcv cristianrcv requested a review from pditommaso July 8, 2026 13:07
cristianrcv and others added 4 commits July 8, 2026 15:09
This job runs Gradle, which uses the pinned Java 25 toolchain; install
JDK 25 in setup-java so it matches the toolchain instead of forcing an
auto-provisioned download. Aligns with the Java 25 ADR (seqeralabs/adr#48).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
Gradle 8.x cannot run on Java 25 (buildSrc fails with "Unsupported class
file major version 69"); Gradle 9.1+ is required. Prerequisite for the
Java 25 toolchain in seqeralabs/adr#48.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
The previous Groovy versions cannot process Java 25 class files (main and
test compileGroovy fail with "Unsupported class file major version 69")
on the Java 25 toolchain. Bump all Groovy artifacts to 4.0.31, which
supports JDK 25, matching the nextflow project.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
Gradle 9 no longer places the JUnit Platform launcher on the test runtime
classpath, so modules using the java-library and java-test-fixtures
conventions fail to start Spock/JUnit ("Failed to load JUnit Platform").
Add junit-platform-launcher as testRuntimeOnly in both shared conventions
so every module gets it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant