diff --git a/maven-plugin-plugin/pom.xml b/maven-plugin-plugin/pom.xml
index c52dcfe..9ba7252 100644
--- a/maven-plugin-plugin/pom.xml
+++ b/maven-plugin-plugin/pom.xml
@@ -61,7 +61,7 @@
1.0-alpha-10
1.0-alpha-10
- 2.5-SNAPSHOT
+ [2.5-SNAPSHOT,)
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
index 18957dd..88bef11 100644
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
@@ -24,6 +24,8 @@ import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.generator.Generator;
import org.apache.maven.tools.plugin.scanner.MojoScanner;
@@ -144,8 +146,10 @@ public abstract class AbstractGeneratorMojo
try
{
pluginDescriptor.setDependencies( PluginUtils.toComponentDependencies( project.getRuntimeDependencies() ) );
+
+ PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
- mojoScanner.populatePluginDescriptor( project, pluginDescriptor );
+ mojoScanner.populatePluginDescriptor( request );
getOutputDirectory().mkdirs();
diff --git a/maven-plugin-tools-ant/src/main/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractor.java b/maven-plugin-tools-ant/src/main/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractor.java
index c244cf4..73ae00d 100644
--- a/maven-plugin-tools-ant/src/main/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-ant/src/main/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractor.java
@@ -22,11 +22,11 @@ package org.apache.maven.tools.plugin.extractor.ant;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.tools.model.PluginMetadataParseException;
import org.apache.maven.plugin.tools.model.PluginMetadataParser;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.path.PathTranslator;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.codehaus.plexus.component.repository.ComponentRequirement;
@@ -56,7 +56,7 @@ public class AntMojoDescriptorExtractor
/** {@inheritDoc} */
protected List extractMojoDescriptorsFromMetadata( Map metadataFilesKeyedByBasedir,
- PluginDescriptor pluginDescriptor )
+ PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException
{
List descriptors = new ArrayList();
@@ -218,7 +218,7 @@ public class AntMojoDescriptorExtractor
descriptor.setComponentComposer( "map-oriented" );
descriptor.setComponentConfigurator( "map-oriented" );
- descriptor.setPluginDescriptor( pluginDescriptor );
+ descriptor.setPluginDescriptor( request.getPluginDescriptor() );
descriptors.add( descriptor );
}
@@ -234,13 +234,13 @@ public class AntMojoDescriptorExtractor
}
/** {@inheritDoc} */
- protected String getScriptFileExtension()
+ protected String getScriptFileExtension( PluginToolsRequest request )
{
return SCRIPT_FILE_EXTENSION;
}
/** {@inheritDoc} */
- protected String getMetadataFileExtension()
+ protected String getMetadataFileExtension( PluginToolsRequest request )
{
return METADATA_FILE_EXTENSION;
}
diff --git a/maven-plugin-tools-ant/src/test/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractorTest.java b/maven-plugin-tools-ant/src/test/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractorTest.java
index 92d5bf3..fe31173 100644
--- a/maven-plugin-tools-ant/src/test/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractorTest.java
+++ b/maven-plugin-tools-ant/src/test/java/org/apache/maven/tools/plugin/extractor/ant/AntMojoDescriptorExtractorTest.java
@@ -4,7 +4,10 @@ import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
import org.apache.maven.project.path.PathTranslator;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.codehaus.plexus.component.repository.ComponentRequirement;
import org.codehaus.plexus.util.StringUtils;
@@ -36,7 +39,9 @@ public class AntMojoDescriptorExtractorTest
pd.setVersion( "1" );
pd.setGoalPrefix( "mytest" );
- List metadata = new AntMojoDescriptorExtractor().extractMojoDescriptorsFromMetadata( scriptMap, pd );
+ PluginToolsRequest request = new DefaultPluginToolsRequest( new MavenProject(), pd );
+
+ List metadata = new AntMojoDescriptorExtractor().extractMojoDescriptorsFromMetadata( scriptMap, request );
assertEquals( 2, metadata.size() );
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
new file mode 100644
index 0000000..dc58598
--- /dev/null
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
@@ -0,0 +1,43 @@
+package org.apache.maven.tools.plugin;
+
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components
+ * used to extract {@link MojoDescriptor} instances from different types of metadata for a given
+ * plugin.
+ *
+ * @author jdcasey
+ */
+public class DefaultPluginToolsRequest
+ implements PluginToolsRequest
+{
+
+ private PluginDescriptor pluginDescriptor;
+ private MavenProject project;
+
+ public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
+ {
+ this.project = project;
+ this.pluginDescriptor = pluginDescriptor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public PluginDescriptor getPluginDescriptor()
+ {
+ return pluginDescriptor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public MavenProject getProject()
+ {
+ return project;
+ }
+
+}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
new file mode 100644
index 0000000..d385e5a
--- /dev/null
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
@@ -0,0 +1,27 @@
+package org.apache.maven.tools.plugin;
+
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * Request that encapsulates all information relevant to the process of extracting {@link MojoDescriptor}
+ * instances from metadata for a certain type of mojo.
+ *
+ * @author jdcasey
+ */
+public interface PluginToolsRequest
+{
+
+ /**
+ * Return the current {@link MavenProject} instance in use.
+ */
+ MavenProject getProject();
+
+ /**
+ * Return the {@link PluginDescriptor} currently being populated as part of the build of the
+ * current plugin project.
+ */
+ PluginDescriptor getPluginDescriptor();
+
+}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
index 869b592..f914fff 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java
@@ -22,6 +22,8 @@ package org.apache.maven.tools.plugin.extractor;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.FileUtils;
@@ -47,28 +49,37 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
/** {@inheritDoc} */
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
throws ExtractionException, InvalidPluginDescriptorException
+ {
+ return execute( new DefaultPluginToolsRequest( project, pluginDescriptor ) );
+ }
+
+ /** {@inheritDoc} */
+ public List execute( PluginToolsRequest request )
+ throws ExtractionException, InvalidPluginDescriptorException
{
getLogger().debug( "Running: " + getClass().getName() );
- String metadataExtension = getMetadataFileExtension();
- String scriptExtension = getScriptFileExtension();
+ String metadataExtension = getMetadataFileExtension( request );
+ String scriptExtension = getScriptFileExtension( request );
+
+ MavenProject project = request.getProject();
Map scriptFilesKeyedByBasedir =
- gatherFilesByBasedir( project.getBasedir(), project.getScriptSourceRoots(), scriptExtension );
+ gatherFilesByBasedir( project.getBasedir(), project.getScriptSourceRoots(), scriptExtension, request );
List mojoDescriptors;
if ( !StringUtils.isEmpty( metadataExtension ) )
{
Map metadataFilesKeyedByBasedir =
- gatherFilesByBasedir( project.getBasedir(), project.getScriptSourceRoots(), metadataExtension );
+ gatherFilesByBasedir( project.getBasedir(), project.getScriptSourceRoots(), metadataExtension, request );
- mojoDescriptors = extractMojoDescriptorsFromMetadata( metadataFilesKeyedByBasedir, pluginDescriptor );
+ mojoDescriptors = extractMojoDescriptorsFromMetadata( metadataFilesKeyedByBasedir, request );
}
else
{
- mojoDescriptors = extractMojoDescriptors( scriptFilesKeyedByBasedir, pluginDescriptor );
+ mojoDescriptors = extractMojoDescriptors( scriptFilesKeyedByBasedir, request );
}
- copyScriptsToOutputDirectory( scriptFilesKeyedByBasedir, project.getBuild().getOutputDirectory() );
+ copyScriptsToOutputDirectory( scriptFilesKeyedByBasedir, project.getBuild().getOutputDirectory(), request );
return mojoDescriptors;
}
@@ -78,7 +89,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @param outputDirectory not null
* @throws ExtractionException if any
*/
- protected void copyScriptsToOutputDirectory( Map scriptFilesKeyedByBasedir, String outputDirectory )
+ protected void copyScriptsToOutputDirectory( Map scriptFilesKeyedByBasedir, String outputDirectory, PluginToolsRequest request )
throws ExtractionException
{
File outputDir = new File( outputDirectory );
@@ -133,7 +144,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @param scriptFileExtension not null
* @return map with subdirs paths as key
*/
- protected Map gatherFilesByBasedir( File basedir, List directories, String scriptFileExtension )
+ protected Map gatherFilesByBasedir( File basedir, List directories, String scriptFileExtension, PluginToolsRequest request )
{
Map sourcesByBasedir = new TreeMap();
@@ -191,7 +202,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @throws InvalidPluginDescriptorException if any
*/
protected List extractMojoDescriptorsFromMetadata( Map metadataFilesKeyedByBasedir,
- PluginDescriptor pluginDescriptor )
+ PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException
{
return null;
@@ -202,7 +213,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
*
* @return always null
*/
- protected String getMetadataFileExtension()
+ protected String getMetadataFileExtension( PluginToolsRequest request )
{
return null;
}
@@ -216,7 +227,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any
*/
- protected List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
+ protected List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException
{
return null;
@@ -225,6 +236,6 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
/**
* @return the file extension like .bsh for BeanShell.
*/
- protected abstract String getScriptFileExtension();
+ protected abstract String getScriptFileExtension( PluginToolsRequest request );
}
\ No newline at end of file
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
index 4fad4ec..fddbf81 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java
@@ -22,6 +22,7 @@ package org.apache.maven.tools.plugin.extractor;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import java.util.List;
@@ -34,15 +35,28 @@ public interface MojoDescriptorExtractor
/** Plexus role for lookup */
String ROLE = MojoDescriptorExtractor.class.getName();
+
/**
* Execute the mojo extraction.
*
- * @param project not null Maven project
- * @param pluginDescriptor not null plugin descriptor
+ * @return a list of mojo descriptors.
+ * @throws ExtractionException if any
+ * @throws InvalidPluginDescriptorException if any
+ *
+ * @deprecated Use {@link MojoDescriptorExtractor#execute(PluginToolsRequest)} instead.
+ * Provided for backward compatibility with maven-plugin-plugin < 2.5.
+ */
+ List execute( MavenProject project, PluginDescriptor pluginDescriptor )
+ throws ExtractionException, InvalidPluginDescriptorException;
+
+ /**
+ * Execute the mojo extraction.
+ *
+ * @param request The {@link PluginToolsRequest} containing information for the extraction process.
* @return a list of mojo descriptors.
* @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any
*/
- List execute( MavenProject project, PluginDescriptor pluginDescriptor )
+ List execute( PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException;
}
\ No newline at end of file
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
index d920165..dc77c64 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java
@@ -23,6 +23,8 @@ import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -73,6 +75,13 @@ public class DefaultMojoScanner
/** {@inheritDoc} */
public void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
throws ExtractionException, InvalidPluginDescriptorException
+ {
+ populatePluginDescriptor( new DefaultPluginToolsRequest( project, pluginDescriptor ) );
+ }
+
+ /** {@inheritDoc} */
+ public void populatePluginDescriptor( PluginToolsRequest request )
+ throws ExtractionException, InvalidPluginDescriptorException
{
Logger logger = getLogger();
Set activeExtractorsInternal = getActiveExtractors();
@@ -93,7 +102,7 @@ public class DefaultMojoScanner
logger.info( "Applying mojo extractor for language: " + language );
- List extractorDescriptors = extractor.execute( project, pluginDescriptor );
+ List extractorDescriptors = extractor.execute( request );
logger.info( "Mojo extractor for language: " + language + " found " + extractorDescriptors.size()
+ " mojo descriptors." );
@@ -105,9 +114,9 @@ public class DefaultMojoScanner
logger.debug( "Adding mojo: " + descriptor + " to plugin descriptor." );
- descriptor.setPluginDescriptor( pluginDescriptor );
+ descriptor.setPluginDescriptor( request.getPluginDescriptor() );
- pluginDescriptor.addMojo( descriptor );
+ request.getPluginDescriptor().addMojo( descriptor );
}
}
diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
index 14b2389..a4f7146 100644
--- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
+++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java
@@ -22,6 +22,7 @@ package org.apache.maven.tools.plugin.scanner;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
import java.util.Set;
@@ -40,10 +41,21 @@ public interface MojoScanner
* @param pluginDescriptor not null
* @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any
+ *
+ * @deprecated Use {@link MojoScanner#populatePluginDescriptor(PluginToolsRequest)} instead.
+ * Provided for backward compatibility with maven-plugin-plugin < 2.5.
*/
void populatePluginDescriptor( MavenProject project, PluginDescriptor pluginDescriptor )
throws ExtractionException, InvalidPluginDescriptorException;
+ /**
+ * @param project not null
+ * @param pluginDescriptor not null
+ * @throws ExtractionException if any
+ * @throws InvalidPluginDescriptorException if any
+ */
+ void populatePluginDescriptor( PluginToolsRequest request )
+ throws ExtractionException, InvalidPluginDescriptorException;
/**
* Sets the active extractors.
diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
index 58261ac..b5b56fe 100644
--- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
+++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java
@@ -19,9 +19,13 @@ package org.apache.maven.tools.plugin.scanner;
* under the License.
*/
+import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
+import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import java.util.Collections;
@@ -41,12 +45,19 @@ public class ScannerTestExtractor
}
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
+ throws InvalidPluginDescriptorException, ExtractionException
{
- MojoDescriptor desc = new MojoDescriptor();
- desc.setPluginDescriptor( pluginDescriptor );
- desc.setGoal( goal );
+ return execute( new DefaultPluginToolsRequest( project, pluginDescriptor ) );
+ }
- return Collections.singletonList( desc );
+ public List execute( PluginToolsRequest request )
+ throws ExtractionException, InvalidPluginDescriptorException
+ {
+ MojoDescriptor desc = new MojoDescriptor();
+ desc.setPluginDescriptor( request.getPluginDescriptor() );
+ desc.setGoal( goal );
+
+ return Collections.singletonList( desc );
}
}
\ No newline at end of file
diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
index 37c7670..58faa83 100644
--- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
+++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java
@@ -22,6 +22,8 @@ package org.apache.maven.tools.plugin.scanner;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import java.util.Collections;
@@ -35,9 +37,14 @@ public class TestExtractor
{
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
+ {
+ return execute( new DefaultPluginToolsRequest( project, pluginDescriptor ) );
+ }
+
+ public List execute( PluginToolsRequest request )
{
MojoDescriptor desc = new MojoDescriptor();
- desc.setPluginDescriptor( pluginDescriptor );
+ desc.setPluginDescriptor( request.getPluginDescriptor() );
desc.setGoal( "testGoal" );
return Collections.singletonList( desc );
diff --git a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
index 4b1b40e..bc22c13 100644
--- a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java
@@ -24,6 +24,7 @@ import bsh.Interpreter;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
@@ -49,13 +50,13 @@ public class BeanshellMojoDescriptorExtractor
extends AbstractScriptedMojoDescriptorExtractor
{
/** {@inheritDoc} */
- protected String getScriptFileExtension()
+ protected String getScriptFileExtension( PluginToolsRequest request )
{
return ".bsh";
}
/** {@inheritDoc} */
- protected List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginDescriptor pluginDescriptor )
+ protected List extractMojoDescriptors( Map scriptFilesKeyedByBasedir, PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException
{
List descriptors = new ArrayList();
@@ -82,7 +83,7 @@ public class BeanshellMojoDescriptorExtractor
relativePath = relativePath.replace( '\\', '/' );
- MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, pluginDescriptor );
+ MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, request.getPluginDescriptor() );
descriptors.add( mojoDescriptor );
}
}
diff --git a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
index 61bb56e..d82770e 100644
--- a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
+++ b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
@@ -32,6 +32,8 @@ import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.Requirement;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
+import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.ExtractionException;
@@ -580,7 +582,14 @@ public class JavaMojoDescriptorExtractor
public List execute( MavenProject project, PluginDescriptor pluginDescriptor )
throws ExtractionException, InvalidPluginDescriptorException
{
- JavaClass[] javaClasses = discoverClasses( project );
+ return execute( new DefaultPluginToolsRequest( project, pluginDescriptor ) );
+ }
+
+ /** {@inheritDoc} */
+ public List execute( PluginToolsRequest request )
+ throws ExtractionException, InvalidPluginDescriptorException
+ {
+ JavaClass[] javaClasses = discoverClasses( request.getProject() );
List descriptors = new ArrayList();
@@ -591,7 +600,7 @@ public class JavaMojoDescriptorExtractor
if ( tag != null )
{
MojoDescriptor mojoDescriptor = createMojoDescriptor( javaClasses[i] );
- mojoDescriptor.setPluginDescriptor( pluginDescriptor );
+ mojoDescriptor.setPluginDescriptor( request.getPluginDescriptor() );
// Validate the descriptor as best we can before allowing it to be processed.
validate( mojoDescriptor );
diff --git a/pom.xml b/pom.xml
index 950839d..b0b2342 100644
--- a/pom.xml
+++ b/pom.xml
@@ -154,7 +154,7 @@
org.apache.maven.plugin-tools
maven-plugin-tools-api
- ${pluginToolsVersion}
+ [${pluginToolsVersion},)
org.apache.maven.plugin-tools