diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java index 856eb13777..cf3dc95d3a 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java @@ -20,6 +20,7 @@ */ import java.util.StringTokenizer; +import java.util.regex.Pattern; /** * Default implementation of artifact versioning. @@ -174,7 +175,8 @@ public final void parseVersion( String version ) } if ( tok.hasMoreTokens() ) { - fallback = true; + qualifier = tok.nextToken(); + fallback = Pattern.compile("\\d+").matcher( qualifier ).matches(); } // string tokenzier won't detect these and ignores them @@ -213,34 +215,6 @@ private static Integer getNextIntegerToken( StringTokenizer tok ) @Override public String toString() { - StringBuilder buf = new StringBuilder(); - if ( majorVersion != null ) - { - buf.append( majorVersion ); - } - if ( minorVersion != null ) - { - buf.append( "." ); - buf.append( minorVersion ); - } - if ( incrementalVersion != null ) - { - buf.append( "." ); - buf.append( incrementalVersion ); - } - if ( buildNumber != null ) - { - buf.append( "-" ); - buf.append( buildNumber ); - } - else if ( qualifier != null ) - { - if ( buf.length() > 0 ) - { - buf.append( "-" ); - } - buf.append( qualifier ); - } - return buf.toString(); + return comparable.toString(); } } diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java index 9bb252d8ae..813210bb62 100644 --- a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java +++ b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java @@ -71,6 +71,8 @@ public void testVersionParsing() checkVersionParsing( "1.0.1b" , 0, 0, 0, 0, "1.0.1b" ); checkVersionParsing( "1.0M2" , 0, 0, 0, 0, "1.0M2" ); checkVersionParsing( "1.0RC2" , 0, 0, 0, 0, "1.0RC2" ); + checkVersionParsing( "1.1.2.beta1", 1, 1, 2, 0, "beta1" ); + checkVersionParsing( "1.7.3.beta1", 1, 7, 3, 0, "beta1" ); checkVersionParsing( "1.7.3.0" , 0, 0, 0, 0, "1.7.3.0" ); checkVersionParsing( "1.7.3.0-1" , 0, 0, 0, 0, "1.7.3.0-1" ); checkVersionParsing( "PATCH-1193602" , 0, 0, 0, 0, "PATCH-1193602" ); @@ -97,6 +99,10 @@ public void testVersionComparing() assertVersionOlder( "1.0.0", "1.1" ); assertVersionOlder( "1.1", "1.2.0" ); + assertVersionOlder( "1.1.2.alpha1", "1.1.2" ); + assertVersionOlder( "1.1.2.alpha1", "1.1.2.beta1" ); + assertVersionOlder( "1.1.2.beta1", "1.2" ); + assertVersionOlder( "1.0-alpha-1", "1.0" ); assertVersionOlder( "1.0-alpha-1", "1.0-alpha-2" ); assertVersionOlder( "1.0-alpha-2", "1.0-alpha-15" );