apache / apache/maven

[MNG-7690] maven-artifact and resolver GenericVersion disagreement

Open
#8,761 3 comments 0 reactions 0 assignees View on GitHub
bug priority:major
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.