Skip to content

build(isthmus)!: stop publishing the isthmus fat jar - #1044

Merged
bestbeforetoday merged 1 commit into
substrait-io:mainfrom
nielspardon:build/isthmus-drop-fat-jar
Jul 28, 2026
Merged

build(isthmus)!: stop publishing the isthmus fat jar#1044
bestbeforetoday merged 1 commit into
substrait-io:mainfrom
nielspardon:build/isthmus-drop-fat-jar

Conversation

@nielspardon

@nielspardon nielspardon commented Jul 28, 2026

Copy link
Copy Markdown
Member

The :isthmus module applies the shadow plugin only to build an uber jar (isthmus-<version>-all.jar), whose manifest still declares the long-removed io.substrait.isthmus.PlanEntryPoint as its Main-Class. The CLI was extracted into the :isthmus-cli module (built as a GraalVM native image) years ago, so:

  • nothing in the repo consumes this jar, and
  • :isthmus shades/relocates nothing of its own — the ANTLR-runtime relocation that prevents version clashes with consumers lives in :core (relocate("org.antlr.v4.runtime", …)) and is untouched here.

The GradleUp shadow plugin injects a shadowRuntimeElements variant into the java component by default (addShadowVariantIntoJavaComponent), so from(components["java"]) has been publishing this fat jar to Maven Central as an all-classified artifact on every release. Confirmed via the publication's Gradle module metadata:

before                                   after
apiElements       -> isthmus.jar         apiElements       -> isthmus.jar
runtimeElements   -> isthmus.jar         runtimeElements   -> isthmus.jar
shadowRuntimeElements -> isthmus-all.jar  (removed)
javadocElements   -> isthmus-javadoc.jar javadocElements   -> isthmus-javadoc.jar
sourcesElements   -> isthmus-sources.jar sourcesElements   -> isthmus-sources.jar

Change

Remove the shadow plugin (and its shadowJar/build wiring) from :isthmus. The classes { dependsOn(":core:shadowJar") } line is retained — compiling isthmus needs core's relocated jar.

Impact

Standard consumers (implementation("io.substrait:isthmus:<version>")) resolve runtimeElements (the plain jar) and are unaffected. Only a consumer that explicitly requested the all classifier / shadowed variant is affected — see the breaking-change note below.

BREAKING CHANGE: the isthmus fat jar (isthmus-<version>-all.jar — the all classifier / shadowRuntimeElements variant) is no longer published to Maven Central. Consumers that referenced it explicitly should depend on the regular isthmus artifact and its transitive dependencies instead.

🤖 Generated with AI

The isthmus module applied the shadow plugin only to build an uber jar
(isthmus-<version>-all.jar) whose manifest still named the long-removed
io.substrait.isthmus.PlanEntryPoint main class. The CLI moved to the
isthmus-cli module (built as a GraalVM native image) long ago, so nothing
in the repo consumes this jar, and isthmus shades/relocates nothing of its
own -- the ANTLR runtime relocation that avoids version clashes with
consumers lives in :core and is unaffected.

The GradleUp shadow plugin injects a shadowRuntimeElements variant into the
java component by default (addShadowVariantIntoJavaComponent), so
`from(components["java"])` published the fat jar to Maven Central as an
`all`-classified artifact for every release. Remove the shadow plugin from
isthmus to drop it. The core shadowJar dependency is retained (classes
dependsOn :core:shadowJar) because compiling isthmus needs core's
relocated jar.

Standard dependencies (implementation("io.substrait:isthmus:<version>"))
resolve the plain jar and are unaffected.

BREAKING CHANGE: the isthmus fat jar (isthmus-<version>-all.jar -- the `all`
classifier / shadowRuntimeElements variant) is no longer published to Maven
Central. Consumers that referenced it explicitly should depend on the
regular isthmus artifact and its transitive dependencies instead.

@bestbeforetoday bestbeforetoday left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change looks OK to me. Really nobody should have been referencing the isthmus--all.jar anyway, so it doesn't obviously seem like a concern.

@bestbeforetoday
bestbeforetoday merged commit 1eb3c54 into substrait-io:main Jul 28, 2026
15 checks passed
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.

2 participants