feat: Add GraalVM native-image support by removing Guava shading #614
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.
Description
This PR 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:Root Cause
Standard Guava (
com.google.common.*) includes GraalVM native-image configuration inMETA-INF/native-image/. When the SDK shades Guava tosplit.com.google.common.*, this configuration is lost, and GraalVM cannot parse complex classes likeLocalCache.Segment.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
com.google.guava:guavafrom shade plugin includesorg.checkerframework:*from shade plugin includescom.google→split.com.googlerelocationorg.checkerframework→split.org.checkerframeworkrelocationTesting
Impact
Breaking Change
Applications that explicitly depend on the shaded Guava package names (
split.com.google.*) will need to update imports. However, this is unlikely since the shaded packages are internal implementation details.Benefits
Potential Risks
Related Frameworks
This fix enables Split SDK usage with:
Checklist