Repository navigation
fix: Build against the Jackson version of the latest Spring Boot release. - #15
Merged
Merged
Conversation
…ase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hc2MPSLu7HDHTm8HiBsrDz
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.
Builds and tests all modules against the Jackson version of the Spring Boot release in the version catalog (today Spring Boot 4.1.1, i.e. Jackson 3.1.5), instead of a Jackson version of their own (3.2.3 so far).
Why
Spring Boot applications use the Jackson version Spring Boot pins, no matter what our POM says. A client built against a newer Jackson can fail there at runtime.
This is not hypothetical. The client calls
treeToValuewith aJsonNode. Jackson 3.1 added an overload for exactly that, and the compiler silently picks it. On Jackson 3.0, where the overload does not exist, reading typed event data fails with aNoSuchMethodError. 14 tests fail there.The same trap would reopen with every Jackson release newer than Spring Boot's. Our tests would not notice, as they run on the new version. Built against Spring Boot's Jackson, the compiler can not pick anything newer.
How
jackson-databindno longer names a version.spring-boot-dependenciescomes in, at the existingspring-bootversion.jspecify,jackson-core,jackson-databindandjackson-annotationsonly. A platform can only raise versions. Everything else it manages is at our versions or lower today (JUnit, SLF4J, Testcontainers, AssertJ, JSpecify), so it only decides Jackson.versionMapping { fromResolutionResult() }. The client's POM listsjackson-databind 3.1.5and nodependencyManagement.Older Spring Boot releases with an older Jackson are not supported. Their users update Spring Boot, or stay on an earlier client version.
Tests
make qapasses from a clean build (191 + 13 + 10 tests, 100% coverage). Before this change, the client tests were also run once against Jackson 3.1.0 and 3.1.4 (all green) and 3.0.0 and 3.0.4 (14 failures each), by forcing the runtime version.🤖 Generated with Claude Code
https://claude.ai/code/session_01Hc2MPSLu7HDHTm8HiBsrDz