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

Improper canonicalization of versions

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            dmlloyd David M. Lloyd

            Dates

              Created:
              Updated:

              Slack

                Issue deployment