Skip to content

Add the Ben Manes versions plugin and upgrade the build dependencies - #88

Merged
perNyfelt merged 3 commits into
mainfrom
add-versions-plugin
Nov 7, 2026
Merged

perNyfelt merged 3 commits into
mainfrom
add-versions-plugin

Conversation

@perNyfelt

@perNyfelt perNyfelt commented Nov 7, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Applies the Ben Manes versions plugin (io.github.ben-manes.versions 0.67.0) at the root, so ./gradlew dependencyUpdates reports newer versions for every project. Pre-release candidates are only offered for dependencies that are already on a pre-release.

  • Upgrades the build dependencies to their latest releases. Each is bumped in gradle/libs.versions.toml and, where duplicated, in buildSrc/build.gradle:

    Dependency From To
    Gradle wrapper 9.7.0 9.9.0 (distribution SHA-256 pinned)
    Spotless 8.9.0 8.11.0
    Checkstyle 13.10.0 14.4.0
    JUnit 6.0.1 6.1.3
    Jackson 3.1.2 3.2.4
    google-java-format 1.28.0 1.36.1 (no formatting changes)
  • config/checkstyle/checkstyle.xml is re-derived from checkstyle-14.4.0's bundled google_checks.xml. The only change from upstream is the one documented deviation: AbbreviationAsWordInName is disabled.

    • This also drops an undocumented relaxation in the old file. It had a bare JavadocParagraph, while upstream sets allowNewlineParagraph=false.
    • Upstream 14.x also tightens several rules. The ones that matter here: JavadocMethod now checks protected as well as public methods (accessModifiers was public), and module-info.java is no longer excluded, so jmlx-jinja's module descriptor is now checked. The codebase already passes both.
    • Checkstyle 14's new whitespaceCharactersMustBeEscaped rule flagged four literal no-break spaces in jinja and tokenizer tests. They are now written as \u00A0; the strings are identical.
  • jmlx-core's verifyPublishedDependencies no longer calls Task.project at execution time. The ffi project is captured at configuration time and its version read lazily through a provider.

  • AGENTS.md documents dependencyUpdates, including what it can't see: the google-java-format version and the duplicated buildSrc pins.

Not included

google-java-format stays on 1.x. Spotless 8.11.0 refuses google-java-format older than 1.30.0 on JVM 25, so the first push failed CI at spotlessJava; the third commit bumps it to 1.36.1.

  • 1.37.0 throws InvocationTargetException on every file under Spotless 8.11.0 (cause not diagnosed).
  • 2.0.0 reformats 55 Java files (+788/−915, mostly a new lambda layout), which belongs in its own change.

Testing

  • With fresh Gradle daemons on both JDK 25 (CI's JVM) and JDK 21, ./gradlew check --rerun-tasks --continue --warning-mode all and ./gradlew -p buildSrc check --rerun-tasks pass. My first push was tested only on a Java 21 daemon, which is why it missed the JVM-25 Spotless failure.
  • The GPU suites were skipped locally (native runtime unstaged); the macOS native CI job runs them, and passes.
  • No deprecation warnings remain. The one Gradle 9.9 reported, Task.project called at execution time in jmlx-core's verifyPublishedDependencies (an error in Gradle 10), is fixed in the second commit. A tampered expectation still fails that guard.
  • After the upgrade, ./gradlew dependencyUpdates reports no newer versions. It doesn't cover google-java-format, which is held at 1.36.1 (see Not included).
  • gradlew.bat was regenerated by gradlew wrapper, and .gitattributes keeps its CRLF line endings. It was not run on Windows, because the local Windows VM would not start.

🤖 Generated with Claude Code

perNyfelt and others added 3 commits November 7, 2026 22:09
Apply io.github.ben-manes.versions 0.67.0 at the root (the old
com.github.ben-manes.versions id is deprecated), so `./gradlew
dependencyUpdates` reports newer versions for every project. A
pre-release candidate is only offered when the current version is
itself a pre-release.

Upgrades (catalog plus the duplicated buildSrc pins):
- Gradle wrapper 9.7.0 -> 9.9.0 (distribution SHA-256 pinned)
- Spotless 8.9.0 -> 8.11.0
- Checkstyle 13.10.0 -> 14.4.0
- JUnit 6.0.1 -> 6.1.3
- Jackson 3.1.2 -> 3.2.4

config/checkstyle/checkstyle.xml is re-derived from checkstyle-14.4.0's
bundled google_checks.xml with the one documented deviation
(AbbreviationAsWordInName disabled). This also drops an undocumented
relaxation: the old file had a bare JavadocParagraph, while upstream
sets allowNewlineParagraph=false. Checkstyle 14's new
whitespaceCharactersMustBeEscaped rule flagged four literal no-break
spaces in jinja and tokenizer tests; they are now written as  
(the same strings).

google-java-format stays at 1.28.0: 2.0.0 reformats 55 Java files
(new lambda layout) and belongs in its own change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
verifyPublishedDependencies called project(':jmlx-ffi').version inside
doLast, which goes through Task.project at execution time. Gradle 9.9
warns that this becomes an error in Gradle 10. The ffi project is now
captured at configuration time and its version read lazily through a
provider, which is also declared as a task input. Reading the version
eagerly instead would see it before jmlx-ffi's build script sets it,
because jmlx-core is configured first.

`./gradlew check --warning-mode all` now reports no deprecations. A
tampered expectation still fails the guard.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spotless 8.11.0 refuses google-java-format older than 1.30.0 on JVM
25, so with 1.28.0 both CI jobs failed at spotlessJava. The local
check had passed only because the local Gradle daemon ran on Java 21.

1.36.1 is the newest release that works. 1.37.0 throws
InvocationTargetException on every file under Spotless 8.11.0 (cause
not diagnosed). 2.0.0 stays deferred, since it reformats 55 files.
1.36.1 changes no formatting: spotlessCheck is clean on JDK 25 and
JDK 21, with no files rewritten.

Verified with fresh daemons on both JVMs: `./gradlew check --rerun-tasks
--warning-mode all` and `./gradlew -p buildSrc check --rerun-tasks`
pass, with no deprecations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@perNyfelt
perNyfelt merged commit c157693 into main Nov 7, 2026
3 checks passed
@perNyfelt
perNyfelt deleted the add-versions-plugin branch November 7, 2026 21:54
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