Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

    If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

    Maven Versions don't sort correctly

    Scheduled Pinned Locked Moved Support
    2 Posts 2 Posters 8 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J Offline
      jim.borden_4965
      last edited by

      According to this post, the class org.apache.maven.artifact.versioning.ComparableVersion is the source of truth for how maven verisons are sorted, but ProGet maven feeds don't seem to follow this. For example, given the versions 3.1.0-9 and 3.1.0-10, the class will sort them numerically so they are in the order provided just now. ProGet, on the other hand, sorts them lexographically and considers 3.1.0-9 higher than 3.1.0-10. There are probably other weird quirks as well but this is the one that I am concerned with. The retention rules for "keep X latest versions" will delete the wrong artifacts because of this.

      This is what I used to prove the above:

      import java.util.Arrays;
      import org.apache.maven.artifact.versioning.ComparableVersion;
      
      public class App 
      {
          private static final ComparableVersion[] VERSIONS = new ComparableVersion[]{
              new ComparableVersion("3.1.0-10"),
              new ComparableVersion("3.1.0-9")
          };
      
          public static void main( String[] args )
          {
              Arrays.sort(VERSIONS);
              for (ComparableVersion v : VERSIONS) {
                  System.out.println(v);
              }
          }
      }
      

      The resulting output is

      3.1.0-9
      3.1.0-10

      1 Reply Last reply Reply Quote 0
      • NanciCaloN Offline
        NanciCalo inedo-engineer
        last edited by

        Thanks for report @jim-borden_4965

        We just reviewed the Version Order Specifications, which are a bit ambiguous... but if that's what the version class does, then we may as well follow.

        I've fixed this as PG-2226 by comparing integer version qualifiers numerically, and it will be in the next maintenance release.

        1 Reply Last reply Reply Quote 0

        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

        With your input, this post could be even better 💗

        Register Login
        • 1 / 1
        • First post
          Last post
        Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation