Class GenericVersionScheme

  • All Implemented Interfaces:
    org.eclipse.aether.version.VersionScheme

    public final class GenericVersionScheme
    extends java.lang.Object
    implements org.eclipse.aether.version.VersionScheme
    A version scheme using a generic version syntax and common sense sorting.

    This scheme accepts versions of any form, interpreting a version as a sequence of numeric and alphabetic segments. The characters '-', '_', and '.' as well as the mere transitions from digit to letter and vice versa delimit the version segments. Delimiters are treated as equivalent.

    Numeric segments are compared mathematically, alphabetic segments are compared lexicographically and case-insensitively. However, the following qualifier strings are recognized and treated specially: "alpha" = "a" < "beta" = "b" < "milestone" = "m" < "cr" = "rc" < "snapshot" < "final" = "ga" < "sp". All of those well-known qualifiers are considered smaller/older than other strings. An empty segment/string is equivalent to 0.

    In addition to the above mentioned qualifiers, the tokens "min" and "max" may be used as final version segment to denote the smallest/greatest version having a given prefix. For example, "1.2.min" denotes the smallest version in the 1.2 line, "1.2.max" denotes the greatest version in the 1.2 line. A version range of the form "[M.N.*]" is short for "[M.N.min, M.N.max]".

    Numbers and strings are considered incomparable against each other. Where version segments of different kind would collide, comparison will instead assume that the previous segments are padded with trailing 0 or "ga" segments, respectively, until the kind mismatch is resolved, e.g. "1-alpha" = "1.0.0-alpha" < "1.0.1-ga" = "1.0.1".

    • Constructor Summary

      Constructors 
      Constructor Description
      GenericVersionScheme()
      Creates a new instance of the version scheme for parsing versions.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object obj)  
      int hashCode()  
      static void main​(java.lang.String... args)
      A handy main method that behaves similarly like maven-artifact ComparableVersion is, to make possible test and possibly compare differences between the two.
      org.eclipse.aether.util.version.GenericVersion parseVersion​(java.lang.String version)  
      org.eclipse.aether.util.version.GenericVersionConstraint parseVersionConstraint​(java.lang.String constraint)  
      org.eclipse.aether.util.version.GenericVersionRange parseVersionRange​(java.lang.String range)  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • GenericVersionScheme

        public GenericVersionScheme()
        Creates a new instance of the version scheme for parsing versions.
    • Method Detail

      • parseVersion

        public org.eclipse.aether.util.version.GenericVersion parseVersion​(java.lang.String version)
                                                                    throws org.eclipse.aether.version.InvalidVersionSpecificationException
        Specified by:
        parseVersion in interface org.eclipse.aether.version.VersionScheme
        Throws:
        org.eclipse.aether.version.InvalidVersionSpecificationException
      • parseVersionRange

        public org.eclipse.aether.util.version.GenericVersionRange parseVersionRange​(java.lang.String range)
                                                                              throws org.eclipse.aether.version.InvalidVersionSpecificationException
        Specified by:
        parseVersionRange in interface org.eclipse.aether.version.VersionScheme
        Throws:
        org.eclipse.aether.version.InvalidVersionSpecificationException
      • parseVersionConstraint

        public org.eclipse.aether.util.version.GenericVersionConstraint parseVersionConstraint​(java.lang.String constraint)
                                                                                        throws org.eclipse.aether.version.InvalidVersionSpecificationException
        Specified by:
        parseVersionConstraint in interface org.eclipse.aether.version.VersionScheme
        Throws:
        org.eclipse.aether.version.InvalidVersionSpecificationException
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • main

        public static void main​(java.lang.String... args)
        A handy main method that behaves similarly like maven-artifact ComparableVersion is, to make possible test and possibly compare differences between the two.

        To check how "1.2.7" compares to "1.2-SNAPSHOT", for example, you can issue

        java -cp ${maven.repo.local}/org/apache/maven/resolver/maven-resolver-api/${resolver.version}/maven-resolver-api-${resolver.version}.jar:${maven.repo.local}/org/apache/maven/resolver/maven-resolver-util/${resolver.version}/maven-resolver-util-${resolver.version}.jar org.eclipse.aether.util.version.GenericVersionScheme "1.2.7" "1.2-SNAPSHOT"
        command to command line, output is very similar to that of ComparableVersion on purpose.