Class ComparableVersion

  • All Implemented Interfaces:
    Comparable<ComparableVersion>

    public class ComparableVersion
    extends Object
    implements Comparable<ComparableVersion>

    Generic implementation of version comparison.

    Features:
    • mixing of '-' (hyphen) and '.' (dot) separators,
    • transition between characters and digits also constitutes a separator: 1.0alpha1 => [1, 0, alpha, 1]
    • unlimited number of version components,
    • version components in the text can be digits or strings,
    • strings are checked for well-known qualifiers and the qualifier ordering is used for version ordering. Well-known qualifiers (case insensitive) are:
      • alpha or a
      • beta or b
      • milestone or m
      • rc or cr
      • snapshot
      • (the empty string) or ga or final
      • sp
      Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
    • a hyphen usually precedes a qualifier, and is always less important than digits/number, for example 1.0.RC2 < 1.0-RC3 < 1.0.1; but prefer 1.0.0-RC1 over 1.0.0.RC1, and more generally: 1.0.X2 < 1.0-X3 < 1.0.1 for any string X; but prefer 1.0.0-X1 over 1.0.0.X1.
    Author:
    Kenney Westerhof, Hervé Boutemy
    See Also:
    "Versioning" on Maven Wiki
    • Constructor Detail

      • ComparableVersion

        public ComparableVersion​(String version)
    • Method Detail

      • parseVersion

        public final void parseVersion​(String version)
      • getCanonical

        public String getCanonical()
      • hashCode

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

        public static void main​(String... args)
        Main to test version parsing and comparison.

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

        java -jar ${maven.repo.local}/org/apache/maven/maven-artifact/${maven.version}/maven-artifact-${maven.version}.jar "1.2.7" "1.2-SNAPSHOT"
        command to command line. Result of given command will be something like this:
         Display parameters as parsed by Maven (in canonical form) and comparison result:
         1. 1.2.7 == 1.2.7
            1.2.7 > 1.2-SNAPSHOT
         2. 1.2-SNAPSHOT == 1.2-snapshot
         
        Parameters:
        args - the version strings to parse and compare. You can pass arbitrary number of version strings and always two adjacent will be compared