You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/04/25 04:12:41 UTC
svn commit: r532169 - in
/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency:
AnalyzeMojo.java JustAnalyzeMojo.java
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:brianf@apache.org">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
+{
+
+}