Repository: maven Updated Branches: refs/heads/master 8788c90ab -> 09d64bdf5
[MNG-5730] added CLI to test Maven version parsing and comparison Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/09d64bdf Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/09d64bdf Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/09d64bdf Branch: refs/heads/master Commit: 09d64bdf5ceb55dcda36356a04f3723e6440b65e Parents: 8788c90 Author: Hervé Boutemy <[email protected]> Authored: Sun Nov 30 21:56:58 2014 +0100 Committer: Hervé Boutemy <[email protected]> Committed: Sun Nov 30 21:57:07 2014 +0100 ---------------------------------------------------------------------- maven-artifact/pom.xml | 11 +++++ .../artifact/versioning/ComparableVersion.java | 47 +++++++++++++++++--- maven-artifact/src/site/apt/index.apt | 16 ++++++- .../versioning/ComparableVersionTest.java | 9 +++- 4 files changed, 75 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/pom.xml ---------------------------------------------------------------------- diff --git a/maven-artifact/pom.xml b/maven-artifact/pom.xml index b828dfa..b5f284c 100644 --- a/maven-artifact/pom.xml +++ b/maven-artifact/pom.xml @@ -42,6 +42,17 @@ <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-component-metadata</artifactId> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestEntries> + <Main-Class>org.apache.maven.artifact.versioning.ComparableVersion</Main-Class> + </manifestEntries> + </archive> + </configuration> + </plugin> </plugins> </build> </project> http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java ---------------------------------------------------------------------- diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java index c83cbd1..df8543b 100644 --- a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java +++ b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java @@ -329,16 +329,16 @@ public class ComparableVersion public String toString() { - StringBuilder buffer = new StringBuilder( "(" ); + StringBuilder buffer = new StringBuilder(); for ( Iterator<Item> iter = iterator(); iter.hasNext(); ) { - buffer.append( iter.next() ); - if ( iter.hasNext() ) + Item item = iter.next(); + if ( buffer.length() > 0 ) { - buffer.append( ',' ); + buffer.append( ( item instanceof ListItem ) ? '-' : '.' ); } + buffer.append( item ); } - buffer.append( ')' ); return buffer.toString(); } } @@ -458,6 +458,11 @@ public class ComparableVersion return value; } + public String getCanonical() + { + return canonical; + } + public boolean equals( Object o ) { return ( o instanceof ComparableVersion ) && canonical.equals( ( (ComparableVersion) o ).canonical ); @@ -467,4 +472,36 @@ public class ComparableVersion { return canonical.hashCode(); } + + /** + * Main to test version parsing and comparison. + * + * @param args the version strings to parse and compare + */ + public static void main( String... args ) + { + System.out.println( "Display parameters as parsed by Maven (in canonical form) and comparison result:" ); + if ( args.length == 0 ) + { + return; + } + + ComparableVersion prev = null; + int i = 1; + for ( String version : args ) + { + ComparableVersion c = new ComparableVersion( version ); + + if ( prev != null ) + { + int compare = prev.compareTo( c ); + System.out.println( " " + prev.toString() + ' ' + + ( ( compare == 0 ) ? "==" : ( ( compare < 0 ) ? "<" : ">" ) ) + ' ' + version ); + } + + System.out.println( String.valueOf( i++ ) + ". " + version + " == " + c.getCanonical() ); + + prev = c; + } + } } http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/site/apt/index.apt ---------------------------------------------------------------------- diff --git a/maven-artifact/src/site/apt/index.apt b/maven-artifact/src/site/apt/index.apt index abe8550..f796c11 100644 --- a/maven-artifact/src/site/apt/index.apt +++ b/maven-artifact/src/site/apt/index.apt @@ -20,14 +20,26 @@ ----- Hervé Boutemy ----- - 2012-09-29 + 2014-11-30 ----- Maven Artifact - Maven Artifact classes, providing <<<Artifact>>> component ({{{./apidocs/org/apache/maven/artifact/Artifact.html}javadoc}}), + Maven Artifact classes, providing <<<Artifact>>> interface ({{{./apidocs/org/apache/maven/artifact/Artifact.html}javadoc}}), with its <<<DefaultArtifact>>> implementation ({{{./xref/org/apache/maven/artifact/DefaultArtifact.html}source}}). + The jar file is executable and provides a little tool to display how Maven parses and compares versions: + ++----+ +$ java -jar maven-artifact-*.jar 3.2.4-alpha-1 3.2.4-SNAPSHOT 3.2.4.0 +Display parameters as parsed by Maven (in canonical form) and comparison result: +1. 3.2.4-alpha-1 == 3.2.4.alpha.1 + 3.2.4-alpha-1 < 3.2.4-SNAPSHOT +2. 3.2.4-SNAPSHOT == 3.2.4.snapshot + 3.2.4-SNAPSHOT < 3.2.4.0 +3. 3.2.4.0 == 3.2.4 ++----+ + * Useful entry points * artifact version comparison {{{./apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html}javadoc}}, http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java ---------------------------------------------------------------------- diff --git a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java index 82b261f..7e37625 100644 --- a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java +++ b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java @@ -34,7 +34,14 @@ public class ComparableVersionTest { private Comparable newComparable( String version ) { - return new ComparableVersion( version ); + ComparableVersion ret = new ComparableVersion( version ); + String canonical = ret.getCanonical(); + String parsedCanonical = new ComparableVersion( canonical ).getCanonical(); + + assertEquals( "canonical( " + version + " ) = " + canonical + " -> canonical: " + parsedCanonical, canonical, + parsedCanonical ); + + return ret; } private static final String[] VERSIONS_QUALIFIER =
