You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Karl Heinz Marbaise (Jira)" <ji...@apache.org> on 2019/12/26 13:18:00 UTC

[jira] [Comment Edited] (MNG-6420) ComparableVersion incorrectly parses certain version strings

    [ https://issues.apache.org/jira/browse/MNG-6420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17003634#comment-17003634 ] 

Karl Heinz Marbaise edited comment on MNG-6420 at 12/26/19 1:17 PM:
--------------------------------------------------------------------

* {{2.1}} is greater than {{2.0.a}}:
** {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.1 == 2.1
   2.1 > 2.0.a
2. 2.0.a == 2.0.a
{code}
* {{2-1}} is less than {{2.0.a}}
** {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2-1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2-1 == 2-1
   2-1 < 2.0.a
2. 2.0.a == 2.0.a
{code}
* {{2.0.0-1}} is greater than {{2.0.0}}
** {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.0.0-1 2.0.0
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.0.0-1 == 2-1
   2.0.0-1 > 2.0.0
2. 2.0.0 == 2
{code}
* {{2-1}} is equal to {{2.0.0-1}}
** {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2-1 2.0.0-1
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2-1 == 2-1
   2-1 == 2.0.0-1
2. 2.0.0-1 == 2-1
{code} 
* {{2.0.0-1}} is less than {{2.0.a}}
** {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.0.0-1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.0.0-1 == 2-1
   2.0.0-1 < 2.0.a
2. 2.0.a == 2.0.a
{code}


was (Author: khmarbaise):
{{2.1}} is greater than {{2.0.a}}:
* {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.1 == 2.1
   2.1 > 2.0.a
2. 2.0.a == 2.0.a
{code}
{{2-1}} is less than {{2.0.a}}
* {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2-1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2-1 == 2-1
   2-1 < 2.0.a
2. 2.0.a == 2.0.a
{code}
{{2.0.0-1}} is greater than {{2.0.0}}
* {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.0.0-1 2.0.0
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.0.0-1 == 2-1
   2.0.0-1 > 2.0.0
2. 2.0.0 == 2
{code}
{{2-1}} is equal to {{2.0.0-1}}
* {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2-1 2.0.0-1
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2-1 == 2-1
   2-1 == 2.0.0-1
2. 2.0.0-1 == 2-1
{code} 
{{2.0.0-1}} is ... {{2.0.a}}
* {code}
$ java -jar ~/tools/apache-maven-3.6.3/lib/maven-artifact-3.6.3.jar 2.0.0-1 2.0.a
Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 2.0.0-1 == 2-1
   2.0.0-1 < 2.0.a
2. 2.0.a == 2.0.a
{code}

> ComparableVersion incorrectly parses certain version strings
> ------------------------------------------------------------
>
>                 Key: MNG-6420
>                 URL: https://issues.apache.org/jira/browse/MNG-6420
>             Project: Maven
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.5.3
>            Reporter: Ross Goldberg
>            Priority: Major
>             Fix For: wontfix-candidate
>
>
> For certain version strings, ComparableVersion doesn't follow the Maven version order spec (https://maven.apache.org/pom.html#Version_Order_Specification).
> To improve the code & fix the following bugs, I completely rewrote the version parser (using Java 10 & Google Guava 25.1).  It is attached & passes all of the tests from ComparableVersionTest.
> Bug 1:
>  
> java -jar /usr/local/Cellar/maven/3.5.3/libexec/lib/maven-artifact-3.5.3.jar 1-0.3 1
>  
> Outputs:
>  
> 1. 1-0.3 == 1-0.3
>    1-0.3 == 1
> 2. 1 == 1
>  
> This probleem stems from:
>  
> [https://github.com/apache/maven/blob/b8c06e61ab73cd9e25a5b2c93d9e5077b2196751/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java#L295-L296]
>  
>  
>  
> Bug 2:
>  
> java -jar /usr/local/Cellar/maven/3.5.3/libexec/lib/maven-artifact-3.5.3.jar 1-0-2 1-0.1
>  
> 1. 1-0-2 == 1-2
>    1-0-2 < 1-0.1
> 2. 1-0.1 == 1-0.1
>  
> This problem stems from retaining ListItems that, after normalization, have no children other than the subsequent ListItem.  Removing the unnecessary ListItem should fix this (i.e. remove the extraneous ListItem (named extraneous) from its parent ListItem (named parent), then add the only child of extraneous to parent).



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