Class ComparableVersion
- java.lang.Object
-
- org.apache.maven.artifact.versioning.ComparableVersion
-
- All Implemented Interfaces:
java.lang.Comparable<ComparableVersion>
public class ComparableVersion extends java.lang.Object implements java.lang.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
ora
beta
orb
milestone
orm
rc
orcr
snapshot
(the empty string)
orga
orfinal
sp
- 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 prefer1.0.0-RC1
over1.0.0.RC1
, and more generally:1.0.X2 < 1.0-X3 < 1.0.1
for any stringX
; but prefer1.0.0-X1
over1.0.0.X1
.
- See Also:
- "Versioning" on Maven Wiki
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ComparableVersion.BigIntegerItem
Represents a numeric item in the version item list.private static class
ComparableVersion.IntItem
Represents a numeric item in the version item list that can be represented with an int.private static interface
ComparableVersion.Item
private static class
ComparableVersion.ListItem
Represents a version list item.private static class
ComparableVersion.LongItem
Represents a numeric item in the version item list that can be represented with a long.private static class
ComparableVersion.StringItem
Represents a string in the version item list, usually a qualifier.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
canonical
private ComparableVersion.ListItem
items
private static int
MAX_INTITEM_LENGTH
private static int
MAX_LONGITEM_LENGTH
private java.lang.String
value
-
Constructor Summary
Constructors Constructor Description ComparableVersion(java.lang.String version)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compareTo(ComparableVersion o)
boolean
equals(java.lang.Object o)
java.lang.String
getCanonical()
int
hashCode()
static void
main(java.lang.String... args)
Main to test version parsing and comparison.private static ComparableVersion.Item
parseItem(boolean isDigit, java.lang.String buf)
void
parseVersion(java.lang.String version)
private static java.lang.String
stripLeadingZeroes(java.lang.String buf)
java.lang.String
toString()
-
-
-
Field Detail
-
MAX_INTITEM_LENGTH
private static final int MAX_INTITEM_LENGTH
- See Also:
- Constant Field Values
-
MAX_LONGITEM_LENGTH
private static final int MAX_LONGITEM_LENGTH
- See Also:
- Constant Field Values
-
value
private java.lang.String value
-
canonical
private java.lang.String canonical
-
items
private ComparableVersion.ListItem items
-
-
Method Detail
-
parseVersion
public final void parseVersion(java.lang.String version)
-
parseItem
private static ComparableVersion.Item parseItem(boolean isDigit, java.lang.String buf)
-
stripLeadingZeroes
private static java.lang.String stripLeadingZeroes(java.lang.String buf)
-
compareTo
public int compareTo(ComparableVersion o)
- Specified by:
compareTo
in interfacejava.lang.Comparable<ComparableVersion>
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getCanonical
public java.lang.String getCanonical()
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
main
public static void main(java.lang.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
-
-