Skip to content

0.4.0

Choose a tag to compare

@jwcarman jwcarman released this 24 Aug 15:17
· 187 commits to main since this release
bc86b04

Breaking changes

codec-bom no longer inherits from codec-parent, and no longer re-exports Spring Boot's dependency management.

A child inherits its parent's dependencyManagement, and importing a BOM pulls in that BOM's effective dependencyManagement — after inheritance. Because codec-parent imports spring-boot-dependencies for its own build, codec-bom was re-exporting all of it.

Measured on 0.3.0:

entries
exported by codec-bom 1921
Codec's own 7
leaked from spring-boot-dependencies 1914

Importing codec-bom therefore overrode your versions for JUnit, AssertJ, Jackson, Guava, Netty and much else — silently, and in a way that surfaced far from the BOM. One consumer hit a NoSuchMethodError at JUnit test discovery caused by a partially-downgraded JUnit, which resolves cleanly and fails only at runtime.

This affected 0.1.0, 0.2.0 and 0.3.0. The BOM now manages exactly the seven Codec artifacts.

If you import codec-bom, check whether any version you relied on was actually coming from it. Anything outside org.jwcarman.codec now needs its own pin — most likely your test stack, since Spring Boot's JUnit and AssertJ versions were the ones being leaked.

Fixed

  • codec-core's published description no longer claims auto-configuration, which moved to codec-autoconfigure in 0.2.0.

Internal

  • The publish workflow passes -DprocessAllModules=true to versions:set. A parentless BOM is skipped otherwise, which would publish it still carrying -SNAPSHOT.
  • The release tag is passed through env: rather than interpolated into the shell command.