The rangeresolver-maven-plugin is a Maven Plugin that aims to ease some pain points encountered when using version ranges - early identification of unintended API breakages.
The basic idea is:
-
always compile against the lower bound of a given range
-
always test/package against the upper bound of a given range
When working on a code sprint, often you adapt your API concurrently with the implementation hand in hand, without thought about the impact against downstream users.
-
By always compiling against the lower bound, you’re enforcing the source/binary contract for a consistent API, any breakages should trigger an update to the lower bound of your range.
-
By testing/packaging against the upper bound, you’re enforcing the semantic contract for non-breaking changes.