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 ) {