Author: brianf
Date: Fri Nov  5 15:02:16 2010
New Revision: 1031611

URL: http://svn.apache.org/viewvc?rev=1031611&view=rev
Log:
MDEP-262 patch from Tobias Glerke

Modified:
    maven/plugins/trunk/maven-dependency-plugin/pom.xml
    
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractAnalyzeMojo.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=1031611&r1=1031610&r2=1031611&view=diff
==============================================================================
--- maven/plugins/trunk/maven-dependency-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-dependency-plugin/pom.xml Fri Nov  5 15:02:16 2010
@@ -282,6 +282,9 @@ under the License.
               <pomIncludes>
                 <pomInclude>*/pom.xml</pomInclude>
               </pomIncludes>
+              <setupIncludes>
+                <setupInclude>setup-custom-analyzer/pom.xml</setupInclude>
+              </setupIncludes>
               <preBuildHookScript>setup</preBuildHookScript>
               <postBuildHookScript>validate</postBuildHookScript>
               
<localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>

Modified: 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractAnalyzeMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractAnalyzeMojo.java?rev=1031611&r1=1031610&r2=1031611&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractAnalyzeMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractAnalyzeMojo.java
 Fri Nov  5 15:02:16 2010
@@ -34,6 +34,12 @@ import org.apache.maven.project.MavenPro
 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.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
 
 /**
@@ -46,10 +52,17 @@ import org.codehaus.plexus.util.xml.Pret
  */
 public abstract class AbstractAnalyzeMojo
     extends AbstractMojo
+    implements Contextualizable
 {
     // fields -----------------------------------------------------------------
 
     /**
+     * The plexus context to look-up the right {...@link 
ProjectDependencyAnalyzer} implementation depending on the mojo
+     * configuration.
+     */
+    private Context context;
+
+    /**
      * The Maven project to analyze.
      *
      * @parameter expression="${project}"
@@ -59,13 +72,12 @@ public abstract class AbstractAnalyzeMoj
     private MavenProject project;
 
     /**
-     * The Maven project dependency analyzer to use.
+     * Project dependency analyzer to use (plexus component role-hint).
      *
-     * @component
-     * @required
-     * @readonly
+     * @parameter expression="${analyzer}" default-value="default"
+     * @since 2.2
      */
-    private ProjectDependencyAnalyzer analyzer;
+    private String analyzer;
 
     /**
      * Whether to fail the build if a dependency warning is found.
@@ -158,6 +170,32 @@ public abstract class AbstractAnalyzeMoj
         }
     }
 
+    protected ProjectDependencyAnalyzer createProjectDependencyAnalyzer()
+        throws MojoExecutionException
+    {
+
+        final String role = ProjectDependencyAnalyzer.ROLE;
+        final String roleHint = analyzer;
+
+        try
+        {
+            final PlexusContainer container = (PlexusContainer) context.get( 
PlexusConstants.PLEXUS_KEY );
+
+            return (ProjectDependencyAnalyzer) container.lookup( role, 
roleHint );
+        }
+        catch ( Exception exception )
+        {
+            throw new MojoExecutionException( "Failed to instantiate " + 
"ProjectDependencyAnalyser with role " + role
+                + " / role-hint " + roleHint,exception );
+        }
+    }
+
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        this.context = context;
+    }
+
     // private methods --------------------------------------------------------
 
     private boolean checkDependencies()
@@ -166,7 +204,7 @@ public abstract class AbstractAnalyzeMoj
         ProjectDependencyAnalysis analysis;
         try
         {
-            analysis = analyzer.analyze( project );
+            analysis = createProjectDependencyAnalyzer().analyze( project );
         }
         catch ( ProjectDependencyAnalyzerException exception )
         {


Reply via email to