Migrate to Jackson 3 as jackson-dataformat-msgpack for 1.0.0; add jackson2-dataformat-msgpack - #1012
Migrate to Jackson 3 as jackson-dataformat-msgpack for 1.0.0; add jackson2-dataformat-msgpack#1012xerial wants to merge 8 commits into
Conversation
Address PR #987 feedback asking for a clear artifact-name mapping between jackson-dataformat-msgpack (Jackson 2) and jackson-dataformat-msgpack-jackson3 (Jackson 3) to reduce upgrade confusion.
# Conflicts: # .github/workflows/CI.yml
main migrated the build to sbt 2 (feb87ef) without sbt-jmh, since sbt-jmh 0.4.7 has no sbt-2-compatible artifact. This branch's msgpack-jackson3 JMH benchmarks depend on sbt-jmh, so after merging main the plugin fails to resolve. 0.4.8 publishes an sbt_2_3 build.
…3 to msgpack-jackson Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ZZUaHusAjVx6SNu4sA42s
…format-msgpack - msgpack-jackson now hosts the Jackson 3.x integration (artifact jackson-dataformat-msgpack, package org.msgpack.jackson3.dataformat, Java 17+) - msgpack-jackson2 hosts the Jackson 2.x integration in maintenance mode (artifact jackson2-dataformat-msgpack, package org.msgpack.jackson.dataformat unchanged, Java 8+) - Distinct packages and artifactIds let both integrations coexist on one classpath for incremental migration - Add sbt-jupiter-interface so the Jackson 2 module's JUnit 5 tests actually run; they had been silently skipped (0 tests detected) on main - Fix MessagePackDataformatTestBase lifecycle annotations (JUnit 4 @Before/ @after on JUnit 5 tests meant setup never ran) - Restore byte-offset-as-columnNr in Jackson 2 MessagePackParser locations, regressed unnoticed in #903 when the deprecated JsonLocation constructor was replaced Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ZZUaHusAjVx6SNu4sA42s
0.17+ upgrades to JUnit 6, which requires Java 17; the JDK 8 CI lane failed compiling msgpack-jackson2 tests against junit-jupiter-api 6.0.3 (class file version 61). 0.15.2 stays on JUnit 5.14, and the module's explicit junit-jupiter 5.14.4 dependency wins resolution. Verified by forking the tests onto a real JDK 8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ZZUaHusAjVx6SNu4sA42s
|
@xerial Thanks for building on the PR. I understand the goal of giving Jackson 3 the unqualified
Could we instead give Jackson 3 a new group ID?
This is JLBP-6 Case 4: the Maven ID and Java package are renamed together. Existing Jackson 2 users do not need to change coordinates, both modules keep the Jackson used a similar structure for its XML module:
Would this structure work here? |
Summary
This PR builds on #987 (thanks @komamitsu — all the Jackson 3 port code here is from that PR) and restructures the modules for a 1.0.0 release, as proposed in #987 (comment):
msgpack-jacksonjackson-dataformat-msgpack(1.x)org.msgpack.jackson3.dataformatmsgpack-jackson2jackson2-dataformat-msgpackorg.msgpack.jackson.dataformat(unchanged)jackson-dataformat-msgpacktargets Jackson 3.x from 1.0.0 onward; 0.9.x remains the Jackson 2.x line for users who stay put.jackson2-dataformat-msgpackunchanged (same package), so migrating from 0.9.x only requires changing the artifactId. The module is maintenance-mode: Jackson 2.x bumps and bug fixes only.msgpack-core+msgpack-jackson2only; JDK 17+ lanes test everything. Release publishes core/jackson2 with JDK 8 and the Jackson 3 module with JDK 17.Pre-existing test issues found and fixed along the way
./sbt msgpack-jackson/testdetects 0 tests and CI passes vacuously. Addedsbt-jupiter-interfaceso they actually run (77 tests).MessagePackDataformatTestBaseused JUnit 4@Before/@Afteron JUnit 5 tests, so setup never ran → converted to@BeforeEach/@AfterEach.JsonLocationconstructor inMessagePackParserand silently dropped the byte offset reported viagetColumnNr(). Restored using the non-deprecated 5-arg constructor, matching the Jackson 3 port's behavior (byte offset ascolumnNr).Test results
Closes #933. Supersedes #987 (includes all of its commits).
🤖 Generated with Claude Code
https://claude.ai/code/session_014ZZUaHusAjVx6SNu4sA42s