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)