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 +{ + +}