David M. Lloyd created MNG-6964:
-----------------------------------

             Summary: Maven version sorting is internally inconsistent
                 Key: MNG-6964
                 URL: https://issues.apache.org/jira/browse/MNG-6964
             Project: Maven
          Issue Type: Bug
          Components: core
    Affects Versions: 3.6.3
            Reporter: David M. Lloyd


There's a bug where version sorting is inconsistent. This manifests like this:

{code}
$ java -jar ~/local/apache-maven/lib/maven-artifact-3.6.3.jar 1-0.alpha 1
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1-0.alpha == 1-0.alpha
   1-0.alpha == 1
2. 1 == 1

$ java -jar ~/local/apache-maven/lib/maven-artifact-3.6.3.jar 1-0.beta 1
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1-0.beta == 1-0.beta
   1-0.beta == 1
2. 1 == 1

$ java -jar ~/local/apache-maven/lib/maven-artifact-3.6.3.jar 1-0.beta 1-0.alpha
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1-0.beta == 1-0.beta
   1-0.beta > 1-0.alpha
2. 1-0.alpha == 1-0.alpha
{code}

Thus there is no correct total order: {{1-0.beta > 1.0.alpha}} even though both 
{{1-0.beta}} and {{1.0.alpha}} are equal to {{1}}.

I think this is likely due to a logical bug where any dot-separated segments 
following a zero or release ({{ga}} or {{final}}) is simply truncated in 
certain circumstances:

{code}
$ java -jar ~/local/apache-maven/lib/maven-artifact-3.6.3.jar 1-0.x 1-0
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1-0.x == 1-0.x
   1-0.x == 1-0
2. 1-0 == 1
{code}

but

{code}
$ java -jar ~/local/apache-maven/lib/maven-artifact-3.6.3.jar 1-0.x-1 1-0-1
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 1-0.x-1 == 1-0.x-1
   1-0.x-1 > 1-0-1
2. 1-0-1 == 1-1
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to