Author: brianf
Date: Tue Jan 22 13:37:06 2008
New Revision: 614332

URL: http://svn.apache.org/viewvc?rev=614332&view=rev
Log:
added warning that tree mojo needs >=2.0.8

Modified:
    maven/plugins/trunk/maven-dependency-plugin/pom.xml
    
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/TreeMojo.java

Modified: maven/plugins/trunk/maven-dependency-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/pom.xml?rev=614332&r1=614331&r2=614332&view=diff
==============================================================================
--- maven/plugins/trunk/maven-dependency-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-dependency-plugin/pom.xml Tue Jan 22 13:37:06 2008
@@ -28,7 +28,7 @@
   <artifactId>maven-dependency-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>Maven Dependency Plugin</name>
-  <version>2.0-alpha-5-SNAPSHOT</version>
+  <version>2.0-SNAPSHOT</version>
   <prerequisites>
     <maven>2.0.3</maven>
   </prerequisites>
@@ -154,6 +154,11 @@
       <artifactId>maven-model</artifactId>
       <version>${maven.version}</version>
     </dependency>
+    <dependency>
+         <groupId>org.apache.maven</groupId>
+         <artifactId>maven-core</artifactId>
+         <version>${maven.version}</version>
+       </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-plugin-testing-tools</artifactId>

Modified: 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/TreeMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/TreeMojo.java?rev=614332&r1=614331&r2=614332&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/TreeMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/TreeMojo.java
 Tue Jan 22 13:37:06 2008
@@ -24,6 +24,7 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Iterator;
 import java.util.List;
 
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -32,6 +33,11 @@
 import org.apache.maven.artifact.resolver.ArtifactCollector;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.Restriction;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.execution.RuntimeInformation;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -192,6 +198,13 @@
     private String excludes;
 
     /**
+     * Runtime Information used to check the Maven version
+     * @since 2.0
+     * @component role="org.apache.maven.execution.RuntimeInformation"
+     */
+    private RuntimeInformation rti;
+    
+    /**
      * The computed dependency tree root node of the Maven project.
      */
     private DependencyNode rootNode;
@@ -203,6 +216,24 @@
      */
     public void execute() throws MojoExecutionException, MojoFailureException
     {
+        
+        ArtifactVersion detectedMavenVersion = rti.getApplicationVersion();
+        VersionRange vr;
+        try
+        {
+            vr = VersionRange.createFromVersionSpec( "[2.0.8,)" );
+            if ( !containsVersion( vr, detectedMavenVersion ) )
+            {
+                getLog().warn(
+                               "The tree mojo requires at least Maven 2.0.8 to 
function properly. You may get eroneous results on earlier versions" );
+            }
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new MojoExecutionException(e.getLocalizedMessage());
+        }
+
+        
         if (output != null)
         {
             getLog().warn( "The parameter output is deprecated. Use outputFile 
instead." );
@@ -397,5 +428,43 @@
         return filters.isEmpty() ? null : new AndDependencyNodeFilter( filters 
);
     }
 
+    //following is required because the version handling in maven code 
+    //doesn't work properly. I ripped it out of the enforcer rules.
+    
+
+
+    /**
+     * Copied from Artifact.VersionRange. This is tweaked to handle singular 
ranges properly. Currently the default
+     * containsVersion method assumes a singular version means allow 
everything. This method assumes that "2.0.4" ==
+     * "[2.0.4,)"
+     * 
+     * @param allowedRange range of allowed versions.
+     * @param theVersion the version to be checked.
+     * @return true if the version is contained by the range.
+     */
+    public static boolean containsVersion( VersionRange allowedRange, 
ArtifactVersion theVersion )
+    {
+        boolean matched = false;
+        ArtifactVersion recommendedVersion = 
allowedRange.getRecommendedVersion();
+        if ( recommendedVersion == null )
+        {
+
+            for ( Iterator i = allowedRange.getRestrictions().iterator(); 
i.hasNext() && !matched; )
+            {
+                Restriction restriction = (Restriction) i.next();
+                if ( restriction.containsVersion( theVersion ) )
+                {
+                    matched = true;
+                }
+            }
+        }
+        else
+        {
+            // only singular versions ever have a recommendedVersion
+            int compareTo = recommendedVersion.compareTo( theVersion );
+            matched = ( compareTo <= 0 );
+        }
+        return matched;
+    }
 
 }


Reply via email to