You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "David M. Lloyd (Jira)" <ji...@apache.org> on 2023/02/17 21:12:00 UTC
[jira] [Created] (MNG-7700) Improper canonicalization of versions
David M. Lloyd created MNG-7700:
-----------------------------------
Summary: Improper canonicalization of versions
Key: MNG-7700
URL: https://issues.apache.org/jira/browse/MNG-7700
Project: Maven
Issue Type: Bug
Components: Core
Affects Versions: 3.9.0, 3.8.7
Reporter: David M. Lloyd
The canonicalization logic for versions is incorrect.
Using the method {{ComparableVersion#getCanonical}} as in {{new ComparableVersion(input).getCanonical()}}, the following results can be observed:
||Input||3.8.6 Output||3.8.6 OK?||3.9.0 Output||3.9.0 OK?||
|{{1}}|{{1}}|yes|{{1}}|yes|
|{{0.1}}|{{0.1}}|yes|{{0.1}}|yes|
|{{0-1}}|{{1}}|no|{{1}}|no|
|{{1.x}}|{{1.x}}|yes|{{1-x}}|maybe*|
|{{1-x}}|{{1-x}}|yes|{{1-x}}|yes|
|{{0.x}}|{{0.x}}|yes|{{x}}|no|
|{{0-x}}|{{x}}|no|{{x}}|no|
|{{x}}|{{x}}|yes|{{x}}|yes|
The "OK?" columns indicate whether parsing the canonical version string will yield a {{ComparableVersion}} instance that is {{equal}} to one constructed from the original input, i.e. it's internally consistent.
The "maybe*" item indicates that starting with 3.9.0, version `1.x` is now considered to be equal to `1-x`. I'm not sure if this is a bug or not, or was intentional or not, but it is definitely a change.
These canonicalizations seem to have gotten less consistent in the move to 3.9.0.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)