[MNG-7690] maven-artifact and resolver GenericVersion disagreement
- Dominant language
- Java
- Stars
- 5.3k
- Forks
- 3.1k
- Avg merge
- 20h 42m
- Merged PRs (30d)
- 297
Description
**[Tamas Cservenak](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=cstamas)** opened **[MNG-7690](https://issues.apache.org/jira/browse/MNG-7690?redirect=false)** and commented
Seems there is a disagreement between maven-artifact version sorting and resolver version sorting about this artifact:
https://maven.repository.redhat.com/ga/com/redhat/quarkus/platform/quarkus-camel-bom/
maven-artifact claims Final is "newer" (greater) than SP, while resolver claims SP is "newer" than Final.
For context see here:
https://github.com/dependabot/dependabot-core/issues/6637
Maven Artifact opinion about ordering is this (and is suspicious, as am removing same suffix from both version, but it changes order):
```
$ java -jar ~/.m2/repository-oss/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.jar 2.13.5.SP1-redhat-00002 2.13.5.Final-redhat-00002
Display parameters as parsed by Maven (in canonical form and as a list of tokens) and comparison result:
1. 2.13.5.SP1-redhat-00002 -> 2.13.5.sp-1-redhat-2; tokens: [2, 13, 5, sp, [1, [redhat, [2]]]]
2.13.5.SP1-redhat-00002 < 2.13.5.Final-redhat-00002
2. 2.13.5.Final-redhat-00002 -> 2.13.5-redhat-2; tokens: [2, 13, 5, [redhat, [2]]]
$ java -jar ~/.m2/repository-oss/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.jar 2.13.5.SP1 2.13.5.Final
Display parameters as parsed by Maven (in canonical form and as a list of tokens) and comparison result:
1. 2.13.5.SP1 -> 2.13.5.sp-1; tokens: [2, 13, 5, sp, [1]]
2.13.5.SP1 > 2.13.5.Final
2. 2.13.5.Final -> 2.13.5; tokens: [2, 13, 5]
$
```
Similar tool created with resolver:
```
$ java -cp ~/.m2/repository-oss/org/apache/maven/resolver/maven-resolver-api/1.9.5-SNAPSHOT/maven-resolver-api-1.9.5-SNAPSHOT.jar:~/.m2/repository-oss/org/apache/maven/resolver/maven-resolver-util/1.9.5-SNAPSHOT/maven-resolver-util-1.9.5-SNAPSHOT.jar org.eclipse.aether.util.version.GenericVersionScheme 2.13.5.SP1-redhat-00002 2.13.5.Final-redhat-00002
Display parameters as parsed by Maven Resolver (in canonical form and as a list of tokens) and comparison result:
1. 2.13.5.SP1-redhat-00002 -> 2.13.5.SP1-redhat-00002; tokens: [2, 13, 5, 1, 1, redhat, 2]
2.13.5.SP1-redhat-00002 > 2.13.5.Final-redhat-00002
2. 2.13.5.Final-redhat-00002 -> 2.13.5.Final-redhat-00002; tokens: [2, 13, 5, 0, redhat, 2]
$ java -cp ~/.m2/repository-oss/org/apache/maven/resolver/maven-resolver-api/1.9.5-SNAPSHOT/maven-resolver-api-1.9.5-SNAPSHOT.jar:~/.m2/repository-oss/org/apache/maven/resolver/maven-resolver-util/1.9.5-SNAPSHOT/maven-resolver-util-1.9.5-SNAPSHOT.jar org.eclipse.aether.util.version.GenericVersionScheme 2.13.5.SP1 2.13.5.Final
Display parameters as parsed by Maven Resolver (in canonical form and as a list of tokens) and comparison result:
1. 2.13.5.SP1 -> 2.13.5.SP1; tokens: [2, 13, 5, 1, 1]
2.13.5.SP1 > 2.13.5.Final
2. 2.13.5.Final -> 2.13.5.Final; tokens: [2, 13, 5]
$
```
Resolver both inputs parses and compares in consistent way.
---
4 votes, 8 watchers
Contributor guide
Research direction
Reproduce the disagreement using the maven-artifact jar and the org.eclipse.aether.util.version.GenericVersionScheme entry point with the version pairs shown in the issue. Compare the two parsing and ordering behaviors, then establish the intended consistent result and add coverage for these examples before confirming both implementations agree.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100