Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7700

Improper canonicalization of versions

    XMLWordPrintableJSON

Details

    Description

      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
      0.rc 0.rc yes rc no

      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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dmlloyd David M. Lloyd
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated: