Skip to content

[codex] Add module-info.java via multi-release JAR - #145

Open
cowwoc wants to merge 1 commit into
knuddelsgmbh:mainfrom
cowwoc:codex/add-module-info-main
Open

[codex] Add module-info.java via multi-release JAR#145
cowwoc wants to merge 1 commit into
knuddelsgmbh:mainfrom
cowwoc:codex/add-module-info-main

Conversation

@cowwoc

@cowwoc cowwoc commented Jun 5, 2026

Copy link
Copy Markdown

What changed

Adds a JPMS module-info.java for com.knuddels.jtokkit while preserving Java 8 compatibility by publishing the library JAR as a multi-release JAR.

Why

The library targets Java 8, so a plain top-level module descriptor would break that baseline. Packaging module-info.class under META-INF/versions/9/ keeps Java 8 consumers unchanged while exposing a named module on Java 9+.

Impact

  • Java 8 consumers continue to use the library unchanged.
  • Java 9+ consumers can require com.knuddels.jtokkit as a named module.
  • The sources JAR now includes module-info.java.

Validation

  • JAVA_HOME=/opt/sdkman/candidates/java/21.0.8-zulu PATH=/opt/sdkman/candidates/java/21.0.8-zulu/bin:$PATH java -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain :lib:check :lib:jar
  • Verified the built JAR contains META-INF/versions/9/module-info.class
  • Verified the manifest contains Multi-Release: true

@cowwoc
cowwoc marked this pull request as ready for review June 5, 2026 17:45
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