[MRESOLVER-686] Backport version comparison fix to 1.9.x#1852
Open
bentatham wants to merge 1 commit intoapache:maven-resolver-1.9.xfrom
Open
[MRESOLVER-686] Backport version comparison fix to 1.9.x#1852bentatham wants to merge 1 commit intoapache:maven-resolver-1.9.xfrom
bentatham wants to merge 1 commit intoapache:maven-resolver-1.9.xfrom
Conversation
When two versions differ in kind at index 0 (e.g. a string-prefixed branch-style version versus a numeric release whose first segment is zero), comparePadding with a number filter may return 0 even though the versions are clearly different. That makes equality non-transitive and breaks TimSort when DefaultVersionRangeResolver sorts metadata lists mixing both shapes. This is the same fix as MRESOLVER-336, which was applied to 2.x but never landed on the 1.9.x line that ships with Maven 3.9.x. Adds two regression tests covering the three-way transitivity violation and a representative sort.
Member
|
Thanks for porting this! |
Author
|
Ok, that's great. So the underlying bug will be fixed in Maven 3.10.0 then, I believe. |
Member
|
You can already try it, CI deploys snapshots of 3.10.x (choose latest by timestamp): |
cstamas
approved these changes
Apr 23, 2026
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.
Fixes
...293.225.2.0-dev for version range null: Comparison method violates its general contract!when there is a modifier on the version (eg when usingmvn versions:update-parent).When two versions differ in kind at index 0 (e.g. a string-prefixed branch-style version versus a numeric release whose first segment is zero), comparePadding with a number filter may return 0 even though the versions are clearly different. That makes equality non-transitive and breaks TimSort when DefaultVersionRangeResolver sorts metadata lists mixing both shapes.
This is the same fix as MRESOLVER-336, which was applied to 2.x but never landed on the 1.9.x line that ships with Maven 3.9.x.
Adds two regression tests covering the three-way transitivity violation and a representative sort.
Following this checklist to help us incorporate your
contribution quickly and easily:
Note that commits might be squashed by a maintainer on merge.
This may not always be possible but is a best-practice.
mvn verifyto make sure basic checks pass.A more thorough check will be performed on your pull request automatically.
mvn -Prun-its verify).If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.