How does maven sort version numbers?

后端 未结 3 942
抹茶落季
抹茶落季 2020-11-29 02:21

Maven seems to have the ability to indicate a range of versions such as [1.2.3,) how does maven figure out what is a newer or old

3条回答
  •  余生分开走
    2020-11-29 02:24

    This is a test that was written directly against the ComparableVersion class from Maven.

    package org.codehaus.mojo.buildhelper.versioning;
    
    import org.apache.maven.artifact.versioning.ComparableVersion;
    import org.junit.Assert;
    import org.junit.Test;
    
    public class TempTest {
        @Test
        public void testVersions() {
            Assert.assertTrue(new ComparableVersion("1.0-beta1-SNAPSHOT").compareTo(
                    new ComparableVersion("1.0-beta1")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-beta1").compareTo(
                    new ComparableVersion("1.0-beta2-SNAPSHOT")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-beta2-SNAPSHOT").compareTo(
                    new ComparableVersion("1.0-rc1-SNAPSHOT")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-rc1-SNAPSHOT").compareTo(
                    new ComparableVersion("1.0-rc1")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-rc1").compareTo(
                    new ComparableVersion("1.0-SNAPSHOT")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-SNAPSHOT").compareTo(
                    new ComparableVersion("1.0")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0").compareTo(
                    new ComparableVersion("1")) == 0);
            Assert.assertTrue(new ComparableVersion("1.0").compareTo(
                    new ComparableVersion("1.0-sp")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-sp").compareTo(
                    new ComparableVersion("1.0-whatever")) < 0);
            Assert.assertTrue(new ComparableVersion("1.0-whatever").compareTo(
                    new ComparableVersion("1.0.1")) < 0);
        }
    }
    

    This test asserts that the following versions are considered to be from lowest to highest by Maven:

    • 1.0-beta1-SNAPSHOT
    • 1.0-beta1
    • 1.0-beta2-SNAPSHOT
    • 1.0-rc1-SNAPSHOT
    • 1.0-rc1
    • 1.0-SNAPSHOT
    • 1.0 and 1 (these are equal)
    • 1.0-sp
    • 1.0-whatever
    • 1.0.1

提交回复
热议问题