[MPLUGIN-305] MojoAnnotationsScanner should have better control over dependency scanning

Introduce parameter mojoDependencies 

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1754998 13f79535-47bb-0310-9956-ffa450edef68
master
Robert Scholte 2016-08-02 19:35:27 +00:00
parent 22fcf70b89
commit 372526b052
14 changed files with 1297 additions and 1 deletions

View File

@ -167,6 +167,13 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>maven-surefire-common</artifactId>
<version>2.19.1</version>
</dependency>
<!-- other --> <!-- other -->
<dependency> <dependency>
<groupId>org.apache.velocity</groupId> <groupId>org.apache.velocity</groupId>

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
invoker.goals.1 = clean process-classes

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins.plugin.its</groupId>
<artifactId>mplugin305</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<url>https://issues.apache.org/jira/browse/MPLUGIN-305</url>
<properties>
<mavenPluginPluginVersion>@project.version@</mavenPluginPluginVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${mavenPluginPluginVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>maven-surefire-common</artifactId>
<version>2.19.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>${mavenPluginPluginVersion}</version>
<configuration>
<extractors>
<extractor>java-annotations</extractor>
</extractors>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,289 @@
package org.apache.maven.plugins.plugin.it;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.util.List;
import org.apache.maven.plugin.surefire.AbstractSurefireMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.surefire.suite.RunResult;
@Mojo(name="custom-surefire")
public class CustomSurefireMojo extends AbstractSurefireMojo {
public File getBasedir()
{
return null;
}
public File getClassesDirectory()
{
return null;
}
public String getDebugForkedProcess()
{
return null;
}
public Boolean getFailIfNoSpecifiedTests()
{
return null;
}
public int getForkedProcessTimeoutInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutForcedInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutInSeconds()
{
return 0;
}
public String getReportFormat()
{
return null;
}
public File getReportsDirectory()
{
return null;
}
public String getShutdown()
{
return null;
}
public int getSkipAfterFailureCount()
{
return 0;
}
public String getTest()
{
return null;
}
public File getTestClassesDirectory()
{
return null;
}
public boolean isPrintSummary()
{
return false;
}
public boolean isSkip()
{
return false;
}
public boolean isSkipExec()
{
return false;
}
public boolean isSkipTests()
{
return false;
}
public boolean isUseFile()
{
return false;
}
public boolean isUseManifestOnlyJar()
{
return false;
}
public boolean isUseSystemClassLoader()
{
return false;
}
public void setBasedir( File arg0 )
{
}
public void setClassesDirectory( File arg0 )
{
}
public void setDebugForkedProcess( String arg0 )
{
}
public void setFailIfNoSpecifiedTests( boolean arg0 )
{
}
public void setForkedProcessTimeoutInSeconds( int arg0 )
{
}
public void setParallelTestsTimeoutForcedInSeconds( double arg0 )
{
}
public void setParallelTestsTimeoutInSeconds( double arg0 )
{
}
public void setPrintSummary( boolean arg0 )
{
}
public void setReportFormat( String arg0 )
{
}
public void setReportsDirectory( File arg0 )
{
}
public void setSkip( boolean arg0 )
{
}
public void setSkipExec( boolean arg0 )
{
}
public void setSkipTests( boolean arg0 )
{
}
public void setTest( String arg0 )
{
}
public void setTestClassesDirectory( File arg0 )
{
}
public void setUseFile( boolean arg0 )
{
}
public void setUseManifestOnlyJar( boolean arg0 )
{
}
public void setUseSystemClassLoader( boolean arg0 )
{
}
@Override
protected String[] getDefaultIncludes()
{
return null;
}
@Override
public File getExcludesFile()
{
return null;
}
@Override
public List<String> getIncludes()
{
return null;
}
@Override
public File getIncludesFile()
{
return null;
}
@Override
protected String getPluginName()
{
return null;
}
@Override
protected int getRerunFailingTestsCount()
{
return 0;
}
@Override
public String getRunOrder()
{
return null;
}
@Override
public File[] getSuiteXmlFiles()
{
return null;
}
@Override
protected void handleSummary( RunResult arg0, Exception arg1 )
{
}
@Override
protected boolean hasSuiteXmlFiles()
{
return false;
}
@Override
protected boolean isSkipExecution()
{
return false;
}
@Override
public void setIncludes( List<String> arg0 )
{
}
@Override
public void setRunOrder( String arg0 )
{
}
@Override
public void setSuiteXmlFiles( File[] arg0 )
{
}
@Override
protected List<File> suiteXmlFiles()
{
return null;
}
}

View File

@ -0,0 +1,26 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
File descriptorFile = new File( basedir, "target/classes/META-INF/maven/plugin.xml" );
assert descriptorFile.isFile()
def pluginDescriptor = new XmlParser().parse( descriptorFile );
assert pluginDescriptor.mojos.mojo.size() == 1
assert pluginDescriptor.mojos.mojo.parameters.parameter.size() == 50
return true;

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
invoker.goals.1 = clean process-classes

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins.plugin.its</groupId>
<artifactId>mplugin305</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<url>https://issues.apache.org/jira/browse/MPLUGIN-305</url>
<properties>
<mavenPluginPluginVersion>@project.version@</mavenPluginPluginVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${mavenPluginPluginVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>maven-surefire-common</artifactId>
<version>2.19.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>${mavenPluginPluginVersion}</version>
<configuration>
<extractors>
<extractor>java-annotations</extractor>
</extractors>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
<configuration>
<mojoDependencies/>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,289 @@
package org.apache.maven.plugins.plugin.it;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.util.List;
import org.apache.maven.plugin.surefire.AbstractSurefireMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.surefire.suite.RunResult;
@Mojo(name="custom-surefire")
public class CustomSurefireMojo extends AbstractSurefireMojo {
public File getBasedir()
{
return null;
}
public File getClassesDirectory()
{
return null;
}
public String getDebugForkedProcess()
{
return null;
}
public Boolean getFailIfNoSpecifiedTests()
{
return null;
}
public int getForkedProcessTimeoutInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutForcedInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutInSeconds()
{
return 0;
}
public String getReportFormat()
{
return null;
}
public File getReportsDirectory()
{
return null;
}
public String getShutdown()
{
return null;
}
public int getSkipAfterFailureCount()
{
return 0;
}
public String getTest()
{
return null;
}
public File getTestClassesDirectory()
{
return null;
}
public boolean isPrintSummary()
{
return false;
}
public boolean isSkip()
{
return false;
}
public boolean isSkipExec()
{
return false;
}
public boolean isSkipTests()
{
return false;
}
public boolean isUseFile()
{
return false;
}
public boolean isUseManifestOnlyJar()
{
return false;
}
public boolean isUseSystemClassLoader()
{
return false;
}
public void setBasedir( File arg0 )
{
}
public void setClassesDirectory( File arg0 )
{
}
public void setDebugForkedProcess( String arg0 )
{
}
public void setFailIfNoSpecifiedTests( boolean arg0 )
{
}
public void setForkedProcessTimeoutInSeconds( int arg0 )
{
}
public void setParallelTestsTimeoutForcedInSeconds( double arg0 )
{
}
public void setParallelTestsTimeoutInSeconds( double arg0 )
{
}
public void setPrintSummary( boolean arg0 )
{
}
public void setReportFormat( String arg0 )
{
}
public void setReportsDirectory( File arg0 )
{
}
public void setSkip( boolean arg0 )
{
}
public void setSkipExec( boolean arg0 )
{
}
public void setSkipTests( boolean arg0 )
{
}
public void setTest( String arg0 )
{
}
public void setTestClassesDirectory( File arg0 )
{
}
public void setUseFile( boolean arg0 )
{
}
public void setUseManifestOnlyJar( boolean arg0 )
{
}
public void setUseSystemClassLoader( boolean arg0 )
{
}
@Override
protected String[] getDefaultIncludes()
{
return null;
}
@Override
public File getExcludesFile()
{
return null;
}
@Override
public List<String> getIncludes()
{
return null;
}
@Override
public File getIncludesFile()
{
return null;
}
@Override
protected String getPluginName()
{
return null;
}
@Override
protected int getRerunFailingTestsCount()
{
return 0;
}
@Override
public String getRunOrder()
{
return null;
}
@Override
public File[] getSuiteXmlFiles()
{
return null;
}
@Override
protected void handleSummary( RunResult arg0, Exception arg1 )
{
}
@Override
protected boolean hasSuiteXmlFiles()
{
return false;
}
@Override
protected boolean isSkipExecution()
{
return false;
}
@Override
public void setIncludes( List<String> arg0 )
{
}
@Override
public void setRunOrder( String arg0 )
{
}
@Override
public void setSuiteXmlFiles( File[] arg0 )
{
}
@Override
protected List<File> suiteXmlFiles()
{
return null;
}
}

View File

@ -0,0 +1,26 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
File descriptorFile = new File( basedir, "target/classes/META-INF/maven/plugin.xml" );
assert descriptorFile.isFile()
def pluginDescriptor = new XmlParser().parse( descriptorFile );
assert pluginDescriptor.mojos.mojo.size() == 1
assert pluginDescriptor.mojos.mojo.parameters.parameter.size() == 0
return true;

View File

@ -0,0 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
invoker.goals.1 = clean process-classes

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins.plugin.its</groupId>
<artifactId>mplugin305</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<url>https://issues.apache.org/jira/browse/MPLUGIN-305</url>
<properties>
<mavenPluginPluginVersion>@project.version@</mavenPluginPluginVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${mavenPluginPluginVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>maven-surefire-common</artifactId>
<version>2.19.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>${mavenPluginPluginVersion}</version>
<configuration>
<extractors>
<extractor>java-annotations</extractor>
</extractors>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
<mojoDependencies>
<mojoDependency>org.apache.maven.surefire:maven-surefire-common</mojoDependency>
</mojoDependencies>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,289 @@
package org.apache.maven.plugins.plugin.it;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.util.List;
import org.apache.maven.plugin.surefire.AbstractSurefireMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.surefire.suite.RunResult;
@Mojo(name="custom-surefire")
public class CustomSurefireMojo extends AbstractSurefireMojo {
public File getBasedir()
{
return null;
}
public File getClassesDirectory()
{
return null;
}
public String getDebugForkedProcess()
{
return null;
}
public Boolean getFailIfNoSpecifiedTests()
{
return null;
}
public int getForkedProcessTimeoutInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutForcedInSeconds()
{
return 0;
}
public double getParallelTestsTimeoutInSeconds()
{
return 0;
}
public String getReportFormat()
{
return null;
}
public File getReportsDirectory()
{
return null;
}
public String getShutdown()
{
return null;
}
public int getSkipAfterFailureCount()
{
return 0;
}
public String getTest()
{
return null;
}
public File getTestClassesDirectory()
{
return null;
}
public boolean isPrintSummary()
{
return false;
}
public boolean isSkip()
{
return false;
}
public boolean isSkipExec()
{
return false;
}
public boolean isSkipTests()
{
return false;
}
public boolean isUseFile()
{
return false;
}
public boolean isUseManifestOnlyJar()
{
return false;
}
public boolean isUseSystemClassLoader()
{
return false;
}
public void setBasedir( File arg0 )
{
}
public void setClassesDirectory( File arg0 )
{
}
public void setDebugForkedProcess( String arg0 )
{
}
public void setFailIfNoSpecifiedTests( boolean arg0 )
{
}
public void setForkedProcessTimeoutInSeconds( int arg0 )
{
}
public void setParallelTestsTimeoutForcedInSeconds( double arg0 )
{
}
public void setParallelTestsTimeoutInSeconds( double arg0 )
{
}
public void setPrintSummary( boolean arg0 )
{
}
public void setReportFormat( String arg0 )
{
}
public void setReportsDirectory( File arg0 )
{
}
public void setSkip( boolean arg0 )
{
}
public void setSkipExec( boolean arg0 )
{
}
public void setSkipTests( boolean arg0 )
{
}
public void setTest( String arg0 )
{
}
public void setTestClassesDirectory( File arg0 )
{
}
public void setUseFile( boolean arg0 )
{
}
public void setUseManifestOnlyJar( boolean arg0 )
{
}
public void setUseSystemClassLoader( boolean arg0 )
{
}
@Override
protected String[] getDefaultIncludes()
{
return null;
}
@Override
public File getExcludesFile()
{
return null;
}
@Override
public List<String> getIncludes()
{
return null;
}
@Override
public File getIncludesFile()
{
return null;
}
@Override
protected String getPluginName()
{
return null;
}
@Override
protected int getRerunFailingTestsCount()
{
return 0;
}
@Override
public String getRunOrder()
{
return null;
}
@Override
public File[] getSuiteXmlFiles()
{
return null;
}
@Override
protected void handleSummary( RunResult arg0, Exception arg1 )
{
}
@Override
protected boolean hasSuiteXmlFiles()
{
return false;
}
@Override
protected boolean isSkipExecution()
{
return false;
}
@Override
public void setIncludes( List<String> arg0 )
{
}
@Override
public void setRunOrder( String arg0 )
{
}
@Override
public void setSuiteXmlFiles( File[] arg0 )
{
}
@Override
protected List<File> suiteXmlFiles()
{
return null;
}
}

View File

@ -0,0 +1,26 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
File descriptorFile = new File( basedir, "target/classes/META-INF/maven/plugin.xml" );
assert descriptorFile.isFile()
def pluginDescriptor = new XmlParser().parse( descriptorFile );
assert pluginDescriptor.mojos.mojo.size() == 1
assert pluginDescriptor.mojos.mojo.parameters.parameter.size() == 50
return true;

View File

@ -21,6 +21,8 @@ package org.apache.maven.plugin.plugin;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
@ -40,6 +42,7 @@ import org.codehaus.plexus.util.ReaderFactory;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -129,6 +132,16 @@ public abstract class AbstractGeneratorMojo
*/ */
@Parameter( defaultValue = "${project.artifacts}", required = true, readonly = true ) @Parameter( defaultValue = "${project.artifacts}", required = true, readonly = true )
protected Set<Artifact> dependencies; protected Set<Artifact> dependencies;
/**
* Specify the dependencies as {@code groupId:artifactId} containing (abstract) Mojos.
* If none is specified, all dependencies are scanned.
* If an empty list is specified, no dependencies are scanned.
*
* @since 3.5
*/
@Parameter
private List<String> mojoDependencies;
/** /**
* List of Remote Repositories used by the resolver * List of Remote Repositories used by the resolver
@ -230,6 +243,31 @@ public abstract class AbstractGeneratorMojo
getLog().info( "Using '" + encoding + "' encoding to read mojo source files." ); getLog().info( "Using '" + encoding + "' encoding to read mojo source files." );
} }
Set<Artifact> requestDependencies;
if ( mojoDependencies == null )
{
requestDependencies = dependencies;
}
else if ( mojoDependencies == null )
{
requestDependencies = null;
}
else
{
requestDependencies = new LinkedHashSet<Artifact>();
ArtifactFilter filter = new IncludesArtifactFilter( mojoDependencies );
for ( Artifact artifact : dependencies )
{
if ( filter.include( artifact ) )
{
requestDependencies.add( artifact );
}
}
}
try try
{ {
List<ComponentDependency> deps = GeneratorUtils.toComponentDependencies( project.getRuntimeDependencies() ); List<ComponentDependency> deps = GeneratorUtils.toComponentDependencies( project.getRuntimeDependencies() );
@ -238,7 +276,7 @@ public abstract class AbstractGeneratorMojo
PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
request.setEncoding( encoding ); request.setEncoding( encoding );
request.setSkipErrorNoDescriptorsFound( skipErrorNoDescriptorsFound ); request.setSkipErrorNoDescriptorsFound( skipErrorNoDescriptorsFound );
request.setDependencies( dependencies ); request.setDependencies( requestDependencies );
request.setLocal( this.local ); request.setLocal( this.local );
request.setRemoteRepos( this.remoteRepos ); request.setRemoteRepos( this.remoteRepos );