Skip to content

Migrate build tooling to Java 25 bytecode target and Gradle 9 - #3

Draft
rokatyy wants to merge 3 commits into
masterfrom
feature/java25-lts-migration
Draft

rokatyy wants to merge 3 commits into
masterfrom
feature/java25-lts-migration

Conversation

@rokatyy

@rokatyy rokatyy commented Sep 16, 2026

Copy link
Copy Markdown

Summary

Companion to the nuclio Java runtime migration to Java 25 LTS (nuclio/nuclio#4367). This branch carries three commits — the pre-existing in-flight bump-java work, the original Java 17 bytecode migration, and a follow-up bumping that target to Java 25 once nuclio dropped armhf support. The SDK's public API (EventHandler, Context, Event, etc.) has zero deprecated/removed API usage and no runtime dependencies, so all three are build-tooling-only changes, not source changes:

Commit 1 — Update for newest version (pre-existing, bump-java):

  • Bumps version 1.1.0 → 1.2.0.
  • Bumps JUnit Jupiter 5.0.1 → 5.8.2.
  • Replaces deprecated Gradle syntax: classifierarchiveClassifier, testCompile/testRuntimetestImplementation/testRuntimeOnly, baseNamearchivesBaseName.
  • Makes GPG signing conditional on signing properties being present.

Commit 2 — Migrate build tooling to Java 17 bytecode target and Gradle 9:

  • Originally pinned to Java 17 as the lowest common denominator across nuclio's Java runtime images (armhf was capped at JDK 17 at the time).
  • Adds a real Gradle 9.7.1 wrapper, drops the ancient junit-platform-gradle-plugin for Gradle's native test { useJUnitPlatform() }, moves archivesBaseName into the Gradle-9-compatible base {} block, replaces dead Travis CI with GitHub Actions.

Commit 3 — Bump SDK bytecode target to Java 25, drop the JDK 17 floor:

  • nuclio's companion PR drops armhf Java support entirely rather than pinning to JDK 17 indefinitely, so this SDK no longer needs a lowest-common-denominator target.
  • Targets Java 25 via a Gradle toolchain (java { toolchain { languageVersion = JavaLanguageVersion.of(25) } }) rather than a plain sourceCompatibility/targetCompatibility pin — this auto-provisions a JDK 25 compiler via the Foojay resolver (new settings.gradle), so contributors don't need JDK 25 pre-installed locally.
  • CI matrix drops JDK 17 — compiling for --release 25 requires the build's own JVM to already be JDK 25+.
  • Version stays at 1.2.0 — never actually published to Maven Central, so there's nothing to skip past.

Test plan

  • Real ./gradlew build under the actual Gradle 9.7.1 wrapper, with the toolchain auto-downloading a JDK 25 — succeeds.
  • Verified via that JDK 25 toolchain's own javap that the compiled class files are major version 69 (Java 25 bytecode), confirming the target took effect.
  • Republish to Maven Central — needed before nuclio's Dockerfile SDK pin can be bumped off 1.1.0 (not blocking: old bytecode still loads fine on the new JVMs).

Known non-blocking follow-up

A few Gradle-10-forward deprecation warnings remain (archives configuration for artifact declaration, Groovy space-assignment syntax) — not blocking today since Gradle 10 doesn't exist yet, flagging so it doesn't surprise anyone later.

🤖 Generated with Claude Code

@rokatyy rokatyy changed the title Migrate build tooling to Java 17 bytecode target and Gradle 9 Migrate build tooling to Java 25 bytecode target and Gradle 9 Sep 18, 2026
rokatyy and others added 2 commits September 21, 2026 12:11
Pins sourceCompatibility/targetCompatibility to Java 17 (unset before,
defaulting to whatever JDK ran Gradle) so the SDK jar loads on every
nuclio Java runtime image, including the armhf one capped at JDK 17.

Adds a Gradle 9.7.1 wrapper (none existed), drops the ancient
junit-platform-gradle-plugin in favor of Gradle's native
`test { useJUnitPlatform() }`, adds the junit-platform-launcher
dependency Gradle 9 requires explicitly, and moves archivesBaseName
into the Gradle-9-compatible `base {}` block. Replaces the dead
Travis CI config with a GitHub Actions matrix testing JDK 17 and 25.

Version stays at 1.2.0 (set by the prior commit) rather than bumping
further - 1.2.0 was never actually published to Maven Central, so
there's nothing to skip past.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
nuclio's Java runtime now drops armhf (32-bit ARM) support entirely
rather than pinning to JDK 17 indefinitely for that one architecture,
so the SDK no longer needs a lowest-common-denominator bytecode
target. Targets Java 25 via a Gradle toolchain (auto-provisions a
JDK 25 compiler regardless of the host's installed default JDK,
via the foojay resolver in the new settings.gradle) rather than a
plain sourceCompatibility/targetCompatibility pin. CI matrix drops
JDK 17 - compiling for release 25 requires the build's own JVM to
be JDK 25+.

Version stays at 1.2.0 rather than bumping further - 1.2.0 (set by
the prior bump-java commit) was never actually published to Maven
Central, so there's nothing to skip past.

Verified: real ./gradlew build under Gradle 9.7.1, auto-downloaded
JDK 25 toolchain, compiled class files confirmed at major version 69
(Java 25) via that JDK's own javap.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@rokatyy
rokatyy force-pushed the feature/java25-lts-migration branch from 4b4c85f to 46a2b19 Compare September 21, 2026 11:12
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