feat: Add GraalVM native-image support by removing Guava shading#617
Open
alexcol23 wants to merge 1 commit intosplitio:masterfrom
Open
feat: Add GraalVM native-image support by removing Guava shading#617alexcol23 wants to merge 1 commit intosplitio:masterfrom
alexcol23 wants to merge 1 commit intosplitio:masterfrom
Conversation
This commit enables GraalVM native-image compilation for applications using the Split.io Java SDK. Problem: The Split SDK shades Guava to split.com.google.common.* to avoid dependency conflicts. However, this shaded Guava lacks the GraalVM native-image configuration that standard Guava provides, causing build failures with errors like: 'Discovered unresolved type: split.com.google.common.util.concurrent.SettableFuture' Root Cause: Standard Guava (com.google.common.*) includes GraalVM native-image configuration in META-INF/native-image/. When the SDK shades Guava to split.com.google.common.*, this configuration is lost. Solution: Remove Guava from the shade plugin configuration. Guava remains as a transitive dependency, allowing applications to use the standard Guava library which has proper GraalVM native-image support. Changes: - Remove com.google.guava:guava from shade plugin includes - Remove org.checkerframework:* from shade plugin includes - Remove com.google -> split.com.google relocation - Remove org.checkerframework -> split.org.checkerframework relocation - Update version to 4.18.2-graalvm to distinguish from upstream Testing: - Built native image with Quarkus 3.27.1 + Mandrel JDK-23 - Verified Split client works correctly at runtime - Tested feature flag resolution in native image Reference: splitio#614
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit enables GraalVM native-image compilation for applications using the Split.io Java SDK.
Problem:
The Split SDK shades Guava to split.com.google.common.* to avoid dependency conflicts. However, this shaded Guava lacks the GraalVM native-image configuration that standard Guava provides, causing build failures with errors like:
'Discovered unresolved type: split.com.google.common.util.concurrent.SettableFuture'
Root Cause:
Standard Guava (com.google.common.) includes GraalVM native-image configuration in META-INF/native-image/. When the SDK shades Guava to split.com.google.common., this configuration is lost.
Solution:
Remove Guava from the shade plugin configuration. Guava remains as a transitive dependency, allowing applications to use the standard Guava library which has proper GraalVM native-image support.
Changes:
Testing:
Reference: #614