Author: brianf
Date: Tue Apr 24 19:12:40 2007
New Revision: 532169

URL: http://svn.apache.org/viewvc?view=rev&rev=532169
Log:
updates to analyze to allow scriptable mode.

Added:
    
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/JustAnalyzeMojo.java
Modified:
    
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AnalyzeMojo.java

Modified: 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AnalyzeMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AnalyzeMojo.java?view=diff&rev=532169&r1=532168&r2=532169
==============================================================================
--- 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AnalyzeMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AnalyzeMojo.java
 Tue Apr 24 19:12:40 2007
@@ -19,10 +19,14 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.StringWriter;
 import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -30,6 +34,8 @@
 import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis;
 import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzer;
 import 
org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException;
+import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+
 
 /**
  * This goal analyzes your project's dependencies and lists dependencies that
@@ -60,11 +66,18 @@
     /**
      * Fail Build on problem
      * 
-     * @parameter expression="${mdep.analyze.failBuild}"
+     * @parameter expression="${mdep.analyze.failBuild}" default-value="false"
      */
     private boolean failBuild = false;
 
     /**
+     * Output used dependencies
+     * 
+     * @parameter expression="${mdep.analyze.displayUsed}" 
default-value="false"
+     */
+    private boolean displayUsed = false;
+
+    /**
      * 
      * 
      * @parameter 
expression="${component.org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzer}"
@@ -76,17 +89,48 @@
     /**
      * Ignore Direct Dependency Overrides of dependencyManagement section.
      * 
-     * @parameter expression="${mdep.analyze.ignore.direct}" 
default-value="true"
+     * @parameter expression="${mdep.analyze.ignore.direct}"
+     *            default-value="true"
      */
     private boolean ignoreDirect = true;
 
     /**
      * Ignore Runtime,Provide,Test,System scopes for unused dependency analysis
      * 
-     * @parameter expression="${mdep.analyze.ignore.noncompile}" 
default-value="true"
+     * @parameter expression="${mdep.analyze.ignore.noncompile}"
+     *            default-value="true"
      */
     private boolean ignoreNonCompile = true;
 
+    /**
+     * Output the xml for the missing dependencies
+     * 
+     * @parameter expression="${mdep.analyze.outputXML}" default-value="true"
+     */
+    private boolean outputXML = true;
+    
+    /**
+     * Output scriptable values
+     * 
+     * @parameter expression="${mdep.analyze.scriptable}" default-value="false"
+     */
+    private boolean scriptableOutput = false;
+    
+    /**
+     * Flag to use for scriptable output
+     * 
+     * @parameter expression="${mdep.analyze.flag}" default-value="$$$%%%"
+     */
+    private String scriptableFlag;
+    
+    /**
+     * Flag to use for scriptable output
+     * 
+     * @parameter expression="${basedir}" 
+     * @readonly
+     */
+    private File baseDir;
+
     // Mojo methods -----------------------------------------------------------
 
     /*
@@ -128,9 +172,12 @@
         {
             ProjectDependencyAnalysis analysis = analyzer.analyze( project );
 
-            getLog().info( "Used declared dependencies:" );
+            if ( this.displayUsed )
+            {
+                getLog().info( "Used declared dependencies:" );
 
-            logArtifacts( analysis.getUsedDeclaredArtifacts(), false );
+                logArtifacts( analysis.getUsedDeclaredArtifacts(), false );
+            }
 
             getLog().info( "Used undeclared dependencies:" );
 
@@ -155,6 +202,15 @@
             }
             logArtifacts( unusedDeclared, false );
 
+            if ( outputXML )
+            {
+                writeDependencyXML( usedUndeclared );
+            }
+            if (scriptableOutput)
+            {
+                writeScriptableOutput( usedUndeclared );
+            }
+
             if ( ( usedUndeclared != null && !usedUndeclared.isEmpty() ) || 
unusedDeclared != null
                 && !unusedDeclared.isEmpty() )
             {
@@ -192,5 +248,64 @@
 
             }
         }
+    }
+
+    private void writeDependencyXML( Set artifacts )
+    {
+        if ( !artifacts.isEmpty() )
+        {
+            getLog().info( "Add the following to your pom to correct the 
missing dependencies: " );
+
+            StringWriter out = new StringWriter();
+            PrettyPrintXMLWriter writer = new PrettyPrintXMLWriter( out );
+
+            Iterator iter = artifacts.iterator();
+            while ( iter.hasNext() )
+            {
+                Artifact artifact = (Artifact) iter.next();
+
+                writer.startElement( "dependency" );
+                writer.startElement( "groupId" );
+                writer.writeText( artifact.getGroupId() );
+                writer.endElement();
+                writer.startElement( "artifactId" );
+                writer.writeText( artifact.getArtifactId() );
+                writer.endElement();
+                writer.startElement( "version" );
+                writer.writeText( artifact.getBaseVersion());
+                writer.endElement();
+
+                if ( !Artifact.SCOPE_COMPILE.equals( artifact.getScope() ) )
+                {
+                    writer.startElement( "scope" );
+                    writer.writeText( artifact.getScope() );
+                    writer.endElement();
+                }
+                writer.endElement();
+            }
+
+            getLog().info( "\n" + out.getBuffer() );
+        }
+    }
+    
+   public void writeScriptableOutput(Set artifacts)
+    {
+       if ( !artifacts.isEmpty() )
+       {
+           getLog().info( "Missing dependencies: " );
+           String pomFile = 
baseDir.getAbsolutePath()+File.separatorChar+"pom.xml";
+           StringBuffer buf = new StringBuffer();
+           Iterator iter = artifacts.iterator();
+           while ( iter.hasNext() )
+           {
+               Artifact artifact = (Artifact) iter.next();
+             
+               //called because artifact will set the version to -SNAPSHOT 
only if I do this.
+               artifact.isSnapshot();
+               
+               buf.append( 
scriptableFlag+":"+pomFile+":"+artifact.getDependencyConflictId()+":"+artifact.getClassifier()+":"+artifact.getBaseVersion()+":"+artifact.getScope()+"\n");
+           }
+           getLog().info( "\n" +buf);
+       }
     }
 }

Added: 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/JustAnalyzeMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/JustAnalyzeMojo.java?view=auto&rev=532169
==============================================================================
--- 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/JustAnalyzeMojo.java
 (added)
+++ 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/JustAnalyzeMojo.java
 Tue Apr 24 19:12:40 2007
@@ -0,0 +1,18 @@
+package org.apache.maven.plugin.dependency;
+
+/**
+ * This goal is the same as analyze except it won't call test-compile first. 
You must have
+ * already executed test-compile (or a later phase) to get accurate results.
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brian Fox</a>
+ * @version $Id: AnalyzeMojo.java 523899 2007-03-30 01:07:08Z brianf $
+ * @goal just-analyze
+ * @requiresDependencyResolution test
+ * @execute phase="validate"
+ * @since 2.0-alpha-5
+ */
+public class JustAnalyzeMojo
+    extends AnalyzeMojo
+{
+
+}


Reply via email to