public class VersionComparator
extends java.lang.Object
implements java.util.Comparator<java.lang.String>
Comparator
for version strings.
This gives the desired semantics for our recommended version syntax,
following major.minor.patch-qualifier
syntax,
doing numeric order of major/minor/patch (1.10 > 1.9),
treating anything with a qualifier lower than the corresponding without but higher than items before
(1.2 > 1.2-rc > 1.1),
SNAPSHOT items always lowest rated (1.0 > 2-SNAPSHOT), and
qualifier sorting follows NaturalOrderComparator
(1-M10 > 1-M9).
Impossible to follow semantics for all versioning schemes but does the obvious right thing for normal schemes and pretty well in fringe cases. Probably the most surprising fringe behaviours will be 1.2.3.4 < 1.2.3 (the ".4" is considered a qualifier).
See test case for lots of examples.
Modifier and Type | Field and Description |
---|---|
static VersionComparator |
INSTANCE |
Constructor and Description |
---|
VersionComparator() |
Modifier and Type | Method and Description |
---|---|
int |
compare(java.lang.String v1,
java.lang.String v2) |
static VersionComparator |
getInstance() |
static boolean |
isSnapshot(java.lang.String version) |
public static final VersionComparator INSTANCE
public static VersionComparator getInstance()
public static boolean isSnapshot(java.lang.String version)
public int compare(java.lang.String v1, java.lang.String v2)
compare
in interface java.util.Comparator<java.lang.String>