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



  • 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


  • inedo-engineer

    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.


Log in to reply
 

Inedo Website HomeSupport HomeCode of ConductForums GuideDocumentation