Compare commits

..

1 Commits

Author SHA1 Message Date
Herve Boutemy f724e80b80 [maven-release-plugin] copy for tag maven-plugin-tools-3.3
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/tags/maven-plugin-tools-3.3@1592271 13f79535-47bb-0310-9956-ffa450edef68
2014-05-03 19:24:26 +00:00
182 changed files with 1280 additions and 4723 deletions

1
Jenkinsfile vendored
View File

@ -1 +0,0 @@
asfMavenStdBuild(javaVersions:['8','7'])

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>maven-plugin-tools</artifactId> <artifactId>maven-plugin-tools</artifactId>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<version>3.5.1-SNAPSHOT</version> <version>3.3</version>
</parent> </parent>
<artifactId>maven-plugin-annotations</artifactId> <artifactId>maven-plugin-annotations</artifactId>

View File

@ -52,13 +52,13 @@ public @interface Mojo
/** /**
* the required dependency resolution scope. * the required dependency resolution scope.
* @return the required dependency resolution scope * @return
*/ */
ResolutionScope requiresDependencyResolution() default ResolutionScope.NONE; ResolutionScope requiresDependencyResolution() default ResolutionScope.NONE;
/** /**
* the required dependency collection scope. * the required dependency collection scope.
* @return the required dependency collection scope * @return
*/ */
ResolutionScope requiresDependencyCollection() default ResolutionScope.NONE; ResolutionScope requiresDependencyCollection() default ResolutionScope.NONE;
@ -76,31 +76,31 @@ public @interface Mojo
/** /**
* does your mojo requires a project to be executed? * does your mojo requires a project to be executed?
* @return requires a project * @return
*/ */
boolean requiresProject() default true; boolean requiresProject() default true;
/** /**
* does your mojo requires a reporting context to be executed? * does your mojo requires a reporting context to be executed?
* @return requires a reporting context * @return
*/ */
boolean requiresReports() default false; boolean requiresReports() default false;
/** /**
* if the Mojo uses the Maven project and its child modules. * if the Mojo uses the Maven project and its child modules.
* @return uses the Maven project and its child modules * @return
*/ */
boolean aggregator() default false; boolean aggregator() default false;
/** /**
* can this Mojo be invoked directly only? * can this Mojo be invoked directly only?
* @return invoked directly only * @return
*/ */
boolean requiresDirectInvocation() default false; boolean requiresDirectInvocation() default false;
/** /**
* does this Mojo need to be online to be executed? * does this Mojo need to be online to be executed?
* @return need to be online * @return
*/ */
boolean requiresOnline() default false; boolean requiresOnline() default false;
@ -108,13 +108,13 @@ public @interface Mojo
/** /**
* own configurator class. * own configurator class.
* @return own configurator class * @return
*/ */
String configurator() default ""; String configurator() default "";
/** /**
* is your mojo thread safe (since Maven 3.x)? * is your mojo thread safe (since Maven 3.x)?
* @return is thread safe * @return
*/ */
boolean threadSafe() default false; boolean threadSafe() default false;
} }

View File

@ -53,8 +53,7 @@ public @interface Parameter
String alias() default ""; String alias() default "";
/** /**
* Property to use to retrieve a value. Can come from <code>-D</code> execution, setting properties or pom * Property to use to retrieve a value. Can come from <code>-D</code> execution, setting properties or pom properties.
* properties.
* @return property name * @return property name
*/ */
String property() default ""; String property() default "";

View File

@ -33,6 +33,17 @@ About ${project.name}
* Usage * Usage
To be able to {{{../maven-plugin-tools-annotations/index.html}use Maven Plugin Tools Java 5 Annotations}}, To be able to {{{../maven-plugin-tools-annotations/index.html}use Maven Plugin Tools Java 5 Annotations}},
some configuration has to be done in <<<pom.xml>>>: see add this artifact to your project dependencies in <<<pom.xml>>>:
{{{../maven-plugin-plugin/examples/using-annotations.html#POM_configuration} Using Plugin Tools Java5 Annotations}}
example in {{{../maven-plugin-plugin} <<<maven-plugin-plugin>>>}} documentation. +--------+
<project>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
+--------+

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>maven-plugin-tools</artifactId> <artifactId>maven-plugin-tools</artifactId>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<version>3.5.1-SNAPSHOT</version> <version>3.3</version>
</parent> </parent>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -38,46 +38,20 @@
</description> </description>
<prerequisites> <prerequisites>
<maven>2.2.1</maven> <maven>2.0.6</maven>
</prerequisites> </prerequisites>
<properties> <properties>
<doxiaVersion>1.4</doxiaVersion> <doxiaVersion>1.2</doxiaVersion>
<doxia-sitetoolsVersion>1.4</doxia-sitetoolsVersion> <doxia-sitetoolsVersion>1.2</doxia-sitetoolsVersion>
<it.debug>true</it.debug> <it.debug>true</it.debug>
<mavenPluginPluginVersion>3.1</mavenPluginPluginVersion>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-generators</artifactId>
</dependency>
<!-- runtime extractors used by default by plugin-tools -->
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-annotations</artifactId> <artifactId>maven-plugin-tools-annotations</artifactId>
<scope>runtime</scope>
</dependency>
<!-- for source code annotations of the mojos -->
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<!-- from stricter view, should use ${mavenPluginToolsVersion} but this is causing problems with release plugin -->
<!--version>${mavenPluginToolsVersion}</version-->
<!--
Do not use 'provided' scope here. The annotations are a transitive dependency of
'maven-plugin-tools-annotations' which fails to load at runtime when not available.
-->
</dependency> </dependency>
<!-- doxia --> <!-- doxia -->
@ -102,7 +76,7 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Maven --> <!-- maven -->
<dependency> <dependency>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId> <artifactId>maven-plugin-api</artifactId>
@ -129,6 +103,15 @@
<artifactId>maven-plugin-registry</artifactId> <artifactId>maven-plugin-registry</artifactId>
<version>${mavenVersion}</version> <version>${mavenVersion}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-generators</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId> <artifactId>maven-artifact-manager</artifactId>
@ -143,7 +126,7 @@
<dependency> <dependency>
<groupId>org.apache.maven.reporting</groupId> <groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-impl</artifactId> <artifactId>maven-reporting-impl</artifactId>
<version>2.3</version> <version>2.1</version><!-- 2.2 causes IT failure with mvn 2.2.1 -->
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.maven.reporting</groupId> <groupId>org.apache.maven.reporting</groupId>
@ -151,6 +134,23 @@
<version>3.0</version> <version>3.0</version>
</dependency> </dependency>
<!-- Maven runtime -->
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-beanshell</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools-model</artifactId>
<scope>runtime</scope>
</dependency>
<!-- plexus --> <!-- plexus -->
<dependency> <dependency>
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
@ -167,13 +167,6 @@
</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>
@ -197,29 +190,6 @@
</dependencies> </dependencies>
<build> <build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/filtered-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes combine.children="append">
<!-- This file should exactly match the output of this project -->
<exclude>src/it/help-basic/expected-help.txt</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.codehaus.modello</groupId> <groupId>org.codehaus.modello</groupId>
@ -264,21 +234,21 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId> <artifactId>maven-plugin-plugin</artifactId>
<version>3.5</version> <configuration>
<!-- will use previous maven-plugin-plugin release to build current maven-plugin-plugin as configured in parent --> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions> <executions>
<execution> <execution>
<id>default-descriptor</id> <id>mojo-descriptor</id>
<phase>process-classes</phase> <goals>
<goal>descriptor</goal>
</goals>
</execution> </execution>
<execution> <execution>
<id>generated-helpmojo</id> <id>generated-helpmojo</id>
<goals> <goals>
<goal>helpmojo</goal> <goal>helpmojo</goal>
</goals> </goals>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
@ -290,7 +260,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId> <artifactId>maven-plugin-plugin</artifactId>
<version>3.3</version><!-- cannot use ${mavenPluginToolsVersion} property because release plugin would try to update --> <version>3.2</version>
<reportSets> <reportSets>
<reportSet> <reportSet>
<reports> <reports>
@ -372,10 +342,6 @@
<sitePluginVersion>3.3</sitePluginVersion> <sitePluginVersion>3.3</sitePluginVersion>
<antVersion>${antVersion}</antVersion> <antVersion>${antVersion}</antVersion>
</filterProperties> </filterProperties>
<properties>
<maven.compiler.source>${maven.compiler.source}</maven.compiler.source>
<maven.compiler.target>${maven.compiler.target}</maven.compiler.target>
</properties>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
@ -389,35 +355,14 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</profile> <dependencies>
<profile> <dependency>
<id>maven-2</id> <groupId>org.apache.maven.plugin-tools</groupId>
<activation> <artifactId>maven-plugin-tools-annotations</artifactId>
<file> <version>${project.version}</version>
<!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) --> <classifier>tests</classifier>
<missing>${basedir}</missing> </dependency>
</file> </dependencies>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<configuration>
<!-- see https://issues.apache.org/jira/browse/MNG-5346 -->
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile> </profile>
</profiles> </profiles>
</project> </project>

View File

@ -62,13 +62,6 @@ under the License.
<version>@project.version@</version> <version>@project.version@</version>
<classifier>tests</classifier> <classifier>tests</classifier>
</dependency> </dependency>
<dependency>
<!-- dependency of org.apache.maven.plugin-tools:maven-plugin-tools-annotations:@project.version@:jar:tests -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-manager</artifactId> <artifactId>plexus-compiler-manager</artifactId>

View File

@ -26,7 +26,7 @@ import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.tools.plugin.extractor.annotations.FooMojo; import org.apache.maven.tools.plugin.annotations.FooMojo;
import org.apache.maven.project.MavenProjectHelper; import org.apache.maven.project.MavenProjectHelper;
/** /**

View File

@ -50,13 +50,6 @@ under the License.
<version>@project.version@</version> <version>@project.version@</version>
<classifier>tests</classifier> <classifier>tests</classifier>
</dependency> </dependency>
<dependency>
<!-- dependency of org.apache.maven.plugin-tools:maven-plugin-tools-annotations:@project.version@:jar:tests -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId> <artifactId>maven-project</artifactId>

View File

@ -15,9 +15,6 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
invoker.maven.version = 3.0+
invoker.goals.1 = clean install -DskipTests invoker.goals.1 = clean install -DskipTests
invoker.goals.2 = org.apache.maven.its.plugin:help:1.0-SNAPSHOT:help invoker.goals.2 = org.apache.maven.its.plugin:help:1.0-SNAPSHOT:help
invoker.goals.3 = --log-file help.log org.apache.maven.its.plugin:help:1.0-SNAPSHOT:help invoker.goals.3 = --log-file help.log org.apache.maven.its.plugin:help:1.0-SNAPSHOT:help
# --log-file option is only supported by Maven 3
invoker.maven.version = 3.0+

View File

@ -46,12 +46,6 @@ under the License.
<artifactId>plexus-utils</artifactId> <artifactId>plexus-utils</artifactId>
<version>3.0.1</version> <version>3.0.1</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>@project.version@</version>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -70,10 +64,6 @@ under the License.
<artifactId>maven-plugin-plugin</artifactId> <artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version> <version>@project.version@</version>
<executions> <executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution> <execution>
<id>help-goal</id> <id>help-goal</id>
<goals> <goals>

View File

@ -20,17 +20,15 @@ package test;
*/ */
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
/** /**
* MOJO-DESCRIPTION. Some "quotation" marks and backslashes '\\', some <strong>important</strong> javadoc<br> and an * MOJO-DESCRIPTION. Some "quotation" marks and backslashes '\\', some <strong>important</strong> javadoc<br> and an
* inline link to {@link test.AnotherMojo}. * inline link to {@link test.AnotherMojo}.
* *
* @goal test
* @deprecated As of 1.0, use the "quoted" goal instead. * @deprecated As of 1.0, use the "quoted" goal instead.
* @since 2.1 * @since 2.1
*/ */
@Mojo( name= "test" )
public class MyMojo public class MyMojo
extends AbstractMojo extends AbstractMojo
{ {
@ -39,26 +37,31 @@ public class MyMojo
* This parameter uses "quotation" marks and backslashes '\\' in its description. Those characters <em>must</em> be * This parameter uses "quotation" marks and backslashes '\\' in its description. Those characters <em>must</em> be
* escaped in Java string literals. * escaped in Java string literals.
* *
* @parameter default-value="escape\\backslash"
* @since 2.0 * @since 2.0
*/ */
@Parameter( defaultValue = "escape\\backslash" )
private String defaultParam; private String defaultParam;
/** /**
* This parameter is deprecated. * This parameter is deprecated.
* *
* @parameter
* @deprecated As of version 1.0, use the {@link #defaultParam} instead. * @deprecated As of version 1.0, use the {@link #defaultParam} instead.
*/ */
@Parameter
private String deprecatedParam; private String deprecatedParam;
@Parameter( property = "test.undocumented", required = true ) /**
* @parameter expression="${test.undocumented}"
* @required
*/
private String undocumentedParam; private String undocumentedParam;
/** /**
* Readonly parameter: should not be proposed for configuration. * Readonly parameter: should not be proposed for configuration.
*
* @parameter default-value="not for configuration"
* @readonly
*/ */
@Parameter( defaultValue = "not for configuration", readonly = true )
private String readonly; private String readonly;
public void execute() public void execute()

View File

@ -17,9 +17,9 @@
* under the License. * under the License.
*/ */
expected = new File( basedir, "expected-help.txt" ).text.trim().replace( "\r", "" ); expected = new File( basedir, "expected-help.txt" ).text.trim();
log = new File( basedir, "help.log" ).text.replace( "\r", "" ); log = new File( basedir, "help.log" ).text;
log = log.substring( log.indexOf( "[INFO] help 1.0-SNAPSHOT" ) ); log = log.substring( log.indexOf( "[INFO] help 1.0-SNAPSHOT" ) );
log = log.substring( 0, log.indexOf( "[INFO]", 5 ) ).trim(); log = log.substring( 0, log.indexOf( "[INFO]", 5 ) ).trim();

View File

@ -36,8 +36,6 @@ under the License.
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- pom properties values not taken into account since invoker defines properties -->
<!-- that override what's defined in pom -->
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
</properties> </properties>
@ -72,11 +70,7 @@ under the License.
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version> <version>2.4</version>
<configuration>
<source>1.8</source><!-- avoid ${maven.compiler.source} since value is not as expected -->
<target>1.8</target><!-- avoid ${maven.compiler.target} since value is not as expected -->
</configuration>
</plugin> </plugin>
</plugins> </plugins>
</pluginManagement> </pluginManagement>

View File

@ -1,30 +0,0 @@
package fr.ca;
/*
* 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.
*/
public interface TestInterface {
/**
* Java 8 required to support such default method implementation
*/
public default void foo(){
}
}

View File

@ -51,34 +51,33 @@ assert mojo.configuration.touchFile[0].text() == '${first.touchFile}'
assert mojo.configuration.touchFile[0].'@implementation' == 'java.io.File' assert mojo.configuration.touchFile[0].'@implementation' == 'java.io.File'
assert mojo.configuration.touchFile[0].'@default-value' == '${project.build.directory}/touch.txt' assert mojo.configuration.touchFile[0].'@default-value' == '${project.build.directory}/touch.txt'
assert mojo.requirements.requirement.size() == 6 assert mojo.configuration.session[0].text() == ''
assert mojo.configuration.session[0].'@implementation' == 'org.apache.maven.execution.MavenSession'
assert mojo.configuration.session[0].'@default-value' == '${session}'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "session" }[0] assert mojo.configuration.project[0].text() == ''
assert requirement.role.text() == 'org.apache.maven.execution.MavenSession' assert mojo.configuration.project[0].'@implementation' == 'org.apache.maven.project.MavenProject'
assert requirement.'field-name'.text() == 'session' assert mojo.configuration.project[0].'@default-value' == '${project}'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "project" }[0] assert mojo.configuration.mojo[0].text() == ''
assert requirement.role.text() == 'org.apache.maven.project.MavenProject' assert mojo.configuration.mojo[0].'@implementation' == 'org.apache.maven.plugin.MojoExecution'
assert requirement.'field-name'.text() == 'project' assert mojo.configuration.mojo[0].'@default-value' == '${mojoExecution}'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "mojo" }[0] assert mojo.configuration.plugin[0].text() == ''
assert requirement.role.text() == 'org.apache.maven.plugin.MojoExecution' assert mojo.configuration.plugin[0].'@implementation' == 'org.apache.maven.plugin.descriptor.PluginDescriptor'
assert requirement.'field-name'.text() == 'mojo' assert mojo.configuration.plugin[0].'@default-value' == '${plugin}'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "plugin" }[0] assert mojo.configuration.settings[0].text() == ''
assert requirement.role.text() == 'org.apache.maven.plugin.descriptor.PluginDescriptor' assert mojo.configuration.settings[0].'@implementation' == 'org.apache.maven.settings.Settings'
assert requirement.'field-name'.text() == 'plugin' assert mojo.configuration.settings[0].'@default-value' == '${settings}'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "settings" }[0] assert mojo.requirements.requirement.size() == 1
assert requirement.role.text() == 'org.apache.maven.settings.Settings'
assert requirement.'field-name'.text() == 'settings'
requirement = mojo.requirements.requirement.findAll{ it.'field-name'.text() == "projectHelper" }[0] assert mojo.requirements.requirement[0].role.text() == 'org.apache.maven.project.MavenProjectHelper'
assert requirement.role.text() == 'org.apache.maven.project.MavenProjectHelper' assert mojo.requirements.requirement[0].'role-hint'.text() == 'test'
assert requirement.'role-hint'.text() == 'test' assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
assert requirement.'field-name'.text() == 'projectHelper'
assert mojo.parameters.parameter.size() == 3 assert mojo.parameters.parameter.size() == 8
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" }[0] parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" }[0]
assert parameter.name.text() == 'namedParam' assert parameter.name.text() == 'namedParam'
@ -98,6 +97,51 @@ assert parameter.required.text() == 'false'
assert parameter.editable.text() == 'false' assert parameter.editable.text() == 'false'
assert parameter.description.text() == 'Project directory.' assert parameter.description.text() == 'Project directory.'
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
assert parameter.name.text() == 'mojo'
assert parameter.alias.isEmpty()
assert parameter.type.text() == 'org.apache.maven.plugin.MojoExecution'
assert parameter.deprecated.isEmpty()
assert parameter.required.text() == 'true'
assert parameter.editable.text() == 'false'
assert parameter.description.text() == ''
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "plugin" }[0]
assert parameter.name.text() == 'plugin'
assert parameter.alias.isEmpty()
assert parameter.type.text() == 'org.apache.maven.plugin.descriptor.PluginDescriptor'
assert parameter.deprecated.isEmpty()
assert parameter.required.text() == 'true'
assert parameter.editable.text() == 'false'
assert parameter.description.text() == ''
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "project" }[0]
assert parameter.name.text() == 'project'
assert parameter.alias.isEmpty()
assert parameter.type.text() == 'org.apache.maven.project.MavenProject'
assert parameter.deprecated.isEmpty()
assert parameter.required.text() == 'true'
assert parameter.editable.text() == 'false'
assert parameter.description.text() == ''
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "session" }[0]
assert parameter.name.text() == 'session'
assert parameter.alias.isEmpty()
assert parameter.type.text() == 'org.apache.maven.execution.MavenSession'
assert parameter.deprecated.isEmpty()
assert parameter.required.text() == 'true'
assert parameter.editable.text() == 'false'
assert parameter.description.text() == ''
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "settings" }[0]
assert parameter.name.text() == 'settings'
assert parameter.alias.isEmpty()
assert parameter.type.text() == 'org.apache.maven.settings.Settings'
assert parameter.deprecated.isEmpty()
assert parameter.required.text() == 'true'
assert parameter.editable.text() == 'false'
assert parameter.description.text() == ''
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "touchFile" }[0] parameter = mojo.parameters.parameter.findAll{ it.name.text() == "touchFile" }[0]
assert parameter.name.text() == 'touchFile' assert parameter.name.text() == 'touchFile'
assert parameter.alias.isEmpty() assert parameter.alias.isEmpty()

View File

@ -1,19 +0,0 @@
# 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.java.version = 1.8+
invoker.goals.1 = clean verify

View File

@ -1,83 +0,0 @@
<?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>test-plugin</groupId>
<artifactId>test-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>@project.version@</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
<configuration>
<goalPrefix>FOO</goalPrefix>
</configuration>
<executions>
<execution>
<id>default-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
<configuration>
</configuration>
<phase>process-classes</phase>
</execution>
<execution>
<id>help-descriptor</id>
<goals>
<goal>helpmojo</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,37 +0,0 @@
package fr.ca;
/*
* 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 org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
/**
* Created by clement.agarini on 04/08/14.
*/
@Mojo(name="test-plugin",defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class MyMojo extends AbstractMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
}
}

View File

@ -1,30 +0,0 @@
package fr.ca;
/*
* 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.
*/
public interface TestInterface {
/**
* Java 8 required to support such default method implementation
*/
public default void foo(){
}
}

View File

@ -1,20 +0,0 @@
# 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.maven.version = 3.0+
invoker.goals.1 = clean install -DskipTests
invoker.goals.2 = --log-file help.log org.apache.maven.its.plugin:help:1.0-SNAPSHOT:help

View File

@ -1,87 +0,0 @@
<?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.its.plugin</groupId>
<artifactId>help</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<description>
Tests generation and compilation of the help mojo.
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>@project.version@</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
<executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution>
<id>help-goal</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,19 +0,0 @@
# 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.
detail = true
goal = test

View File

@ -1,18 +0,0 @@
# 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

@ -1,82 +0,0 @@
<?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

@ -1,289 +0,0 @@
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

@ -1,26 +0,0 @@
/*
* 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

@ -1,18 +0,0 @@
# 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

@ -1,85 +0,0 @@
<?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

@ -1,289 +0,0 @@
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

@ -1,26 +0,0 @@
/*
* 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

@ -1,18 +0,0 @@
# 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

@ -1,85 +0,0 @@
<?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

@ -1,289 +0,0 @@
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

@ -1,26 +0,0 @@
/*
* 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

@ -1,19 +0,0 @@
# 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 = clean plugin:report
invoker.mavenOpts = -Duser.language=en -Duser.country=US -Duser.variant=US

View File

@ -1,86 +0,0 @@
<?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.its.plugin</groupId>
<artifactId>report-since</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>@sitePluginVersion@</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>index</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
</plugin>
</plugins>
</reporting>
</project>

View File

@ -1,67 +0,0 @@
package org;
/*
* 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 org.apache.maven.plugin.AbstractMojo;
/**
* Does nothing.
*
* @goal noop
* @phase process-sources
* @requiresDependencyResolution test
* @requiresDirectInvocation true
* @requiresOnline
* @inheritByDefault false
* @execute phase="compile"
* @aggregator
* @since 1.0
*
* @deprecated You don't use test goals, do you?
*/
public class MyMojo
extends AbstractMojo
{
/**
* This is a test.
*
* @parameter
* @required
*/
@SuppressWarnings( "unused" )
private String required;
/**
* This is a test.
*
* @parameter expression="${string}" default-value="${project.version}/</markup-must-be-escaped>"
* @deprecated Just testing.
* @since 1.1
*/
@SuppressWarnings( "unused" )
private String string;
public void execute()
{
// intentional do nothing
}
}

View File

@ -1,27 +0,0 @@
/*
* 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.
*/
assert new File( basedir, 'target/generated-site' ).exists()
content = new File( basedir, 'target/generated-site/xdoc/noop-mojo.xml' ).text
assert content.contains( '<li><strong>Since</strong>: <code>1.0</code></li>' )
assert content.contains( '<li><strong>Since</strong>: <code>1.1</code></li>' )
return true

View File

@ -1,18 +0,0 @@
# 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 = process-classes javadoc:javadoc

View File

@ -1,95 +0,0 @@
<?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>mplugin3224</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<description>
Generation javadoc for private methods should be valid
</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>@project.version@</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<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-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<level>private</level>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
<executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution>
<id>help-goal</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,68 +0,0 @@
package test;
/*
* 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 org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
/**
* MOJO-DESCRIPTION. Some "quotation" marks and backslashes '\\', some <strong>important</strong> javadoc<br> and an
* inline link to {@link org.apache.maven.plugin.AbstractMojo}.
*
* @deprecated As of 1.0, use the "quoted" goal instead.
* @since 2.1
*/
@Mojo( name= "test" )
public class MyMojo
extends AbstractMojo
{
/**
* This parameter uses "quotation" marks and backslashes '\\' in its description. Those characters <em>must</em> be
* escaped in Java string literals.
*
* @since 2.0
*/
@Parameter( defaultValue = "escape\\backslash" )
private String defaultParam;
/**
* This parameter is deprecated.
*
* @deprecated As of version 1.0, use the {@link #defaultParam} instead.
*/
@Parameter
private String deprecatedParam;
@Parameter( property = "test.undocumented", required = true )
private String undocumentedParam;
/**
* Readonly parameter: should not be proposed for configuration.
*/
@Parameter( defaultValue = "not for configuration", readonly = true )
private String readonly;
public void execute()
{
}
}

View File

@ -15,4 +15,4 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
invoker.goals = clean plugin:report invoker.goals = clean site -DskipTests

View File

@ -74,13 +74,6 @@ under the License.
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId> <artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version> <version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>index</report>
</reports>
</reportSet>
</reportSets>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>

View File

@ -1,18 +0,0 @@
# 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 = clean site

View File

@ -1,62 +0,0 @@
<?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>
<parent>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>plugin</artifactId>
<name>target bytecode defined by plugin configuration</name>
<packaging>maven-plugin</packaging>
<properties><!-- will be overridden -->
<maven.compiler.source>1.3</maven.compiler.source>
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration><!-- will be overridden -->
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,69 +0,0 @@
<?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.
-->
<plugin>
<name>target bytecode defined by plugin configuration</name>
<description></description>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<goalPrefix></goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>touch</goal>
<description>Goal which touches a timestamp file.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<phase>process-sources</phase>
<implementation>org.apache.maven.plugins.issues.plugin.MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>outputDirectory</name>
<type>java.io.File</type>
<required>true</required>
<editable>true</editable>
<description>Location of the file.</description>
</parameter>
</parameters>
<configuration>
<outputDirectory implementation="java.io.File">${project.build.directory}</outputDirectory>
</configuration>
</mojo>
</mojos>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<type>jar</type>
<version>2.0</version>
</dependency>
</dependencies>
</plugin>

View File

@ -1,53 +0,0 @@
<?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>
<parent>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>pluginManagement</artifactId>
<name>target bytecode defined by pluginManagement configuration</name>
<packaging>maven-plugin</packaging>
<properties><!-- will be overridden -->
<maven.compiler.source>1.3</maven.compiler.source>
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@ -1,69 +0,0 @@
<?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.
-->
<plugin>
<name>target bytecode defined by pluginManagement configuration</name>
<description></description>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>pluginManagement</artifactId>
<version>1.0-SNAPSHOT</version>
<goalPrefix>Management</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>touch</goal>
<description>Goal which touches a timestamp file.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<phase>process-sources</phase>
<implementation>org.apache.maven.plugins.issues.plugin.MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>outputDirectory</name>
<type>java.io.File</type>
<required>true</required>
<editable>true</editable>
<description>Location of the file.</description>
</parameter>
</parameters>
<configuration>
<outputDirectory implementation="java.io.File">${project.build.directory}</outputDirectory>
</configuration>
</mojo>
</mojos>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<type>jar</type>
<version>2.0</version>
</dependency>
</dependencies>
</plugin>

View File

@ -1,96 +0,0 @@
<?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.its.plugin-info-jdk</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<modules>
<module>property</module>
<module>pluginManagement</module>
<module>plugin</module>
<module>requirement</module>
</modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
<configuration>
<skipDescriptor>true</skipDescriptor>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>@sitePluginVersion@</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
<reportSets>
<reportSet>
<reports>
<report>index</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>@project.version@</version>
</plugin>
</plugins>
</reporting>
</project>

View File

@ -1,39 +0,0 @@
<?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>
<parent>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>property</artifactId>
<name>target bytecode defined by maven.compiler.target property</name>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.source>1.3</maven.compiler.source>
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
</properties>
</project>

View File

@ -1,69 +0,0 @@
<?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.
-->
<plugin>
<name>target bytecode defined by maven.compiler.target property</name>
<description></description>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>property</artifactId>
<version>1.0-SNAPSHOT</version>
<goalPrefix>property</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>touch</goal>
<description>Goal which touches a timestamp file.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<phase>process-sources</phase>
<implementation>org.apache.maven.plugins.issues.plugin.MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>outputDirectory</name>
<type>java.io.File</type>
<required>true</required>
<editable>true</editable>
<description>Location of the file.</description>
</parameter>
</parameters>
<configuration>
<outputDirectory implementation="java.io.File">${project.build.directory}</outputDirectory>
</configuration>
</mojo>
</mojos>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<type>jar</type>
<version>2.0</version>
</dependency>
</dependencies>
</plugin>

View File

@ -1,78 +0,0 @@
<?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>
<parent>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>requirement</artifactId>
<name>target bytecode defined by report jdk requirement configuration</name>
<packaging>maven-plugin</packaging>
<properties><!-- will be overridden -->
<maven.compiler.source>1.3</maven.compiler.source>
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration><!-- will be overridden -->
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration><!-- will be overridden -->
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<configuration>
<requirements>
<jdk>1.8</jdk>
</requirements>
</configuration>
</plugin>
</plugins>
</reporting>
</project>

View File

@ -1,69 +0,0 @@
<?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.
-->
<plugin>
<name>target bytecode defined by report jdk requirement configuration</name>
<description></description>
<groupId>org.apache.maven.its.plugin-info-jdk</groupId>
<artifactId>requirement</artifactId>
<version>1.0-SNAPSHOT</version>
<goalPrefix>requirement</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>touch</goal>
<description>Goal which touches a timestamp file.</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<phase>process-sources</phase>
<implementation>org.apache.maven.plugins.issues.plugin.MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>outputDirectory</name>
<type>java.io.File</type>
<required>true</required>
<editable>true</editable>
<description>Location of the file.</description>
</parameter>
</parameters>
<configuration>
<outputDirectory implementation="java.io.File">${project.build.directory}</outputDirectory>
</configuration>
</mojo>
</mojos>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<type>jar</type>
<version>2.0</version>
</dependency>
</dependencies>
</plugin>

View File

@ -1,18 +0,0 @@
# 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.
maven.compiler.source=1.3
maven.compiler.target=1.3

View File

@ -1,25 +0,0 @@
/*
* 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.
*/
assert new File( basedir, 'property/target/site/plugin-info.html' ).text.contains( '<td>1.3</td>' )
assert new File( basedir, 'pluginManagement/target/site/plugin-info.html' ).text.contains( '<td>1.4</td>' )
assert new File( basedir, 'plugin/target/site/plugin-info.html' ).text.contains( '<td>1.5</td>' )
assert new File( basedir, 'requirement/target/site/plugin-info.html' ).text.contains( '<td>1.8</td>' )
return true;

View File

@ -62,16 +62,6 @@ under the License.
<build> <build>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<!-- old maven-parent, so fix it like this. -->
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId> <artifactId>maven-plugin-plugin</artifactId>

View File

@ -1,93 +0,0 @@
<?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.
-->
<component-set>
<components>
<!--
| MAVEN PLUGIN
|-->
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>maven-plugin</role-hint>
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
<configuration>
<type>maven-plugin</type>
<extension>jar</extension>
<language>java</language>
<addedToClasspath>true</addedToClasspath>
</configuration>
</component>
<!--
| Defining the phases with their appropriate plugins
! and versions which will be executed during the 'default'
! life cycle.
-->
<!--
| MAVEN PLUGIN
|-->
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>maven-plugin</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<!-- START SNIPPET: maven-plugin-lifecycle -->
<phases>
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:3.0.1:resources
</process-resources>
<compile>
org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile
</compile>
<process-classes>
org.apache.maven.plugins:maven-plugin-plugin:${project.version}:descriptor
</process-classes>
<process-test-resources>
org.apache.maven.plugins:maven-resources-plugin:3.0.1:testResources
</process-test-resources>
<test-compile>
org.apache.maven.plugins:maven-compiler-plugin:3.5.1:testCompile
</test-compile>
<test>
org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test
</test>
<package>
org.apache.maven.plugins:maven-jar-plugin:3.0.2:jar,
org.apache.maven.plugins:maven-plugin-plugin:${project.version}:addPluginArtifactMetadata
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:2.5.2:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy
</deploy>
</phases>
<!-- END SNIPPET: maven-plugin-lifecycle -->
</lifecycle>
</lifecycles>
</configuration>
</component>
</components>
</component-set>

View File

@ -21,8 +21,6 @@ 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;
@ -37,12 +35,10 @@ import org.apache.maven.tools.plugin.generator.Generator;
import org.apache.maven.tools.plugin.generator.GeneratorException; import org.apache.maven.tools.plugin.generator.GeneratorException;
import org.apache.maven.tools.plugin.generator.GeneratorUtils; import org.apache.maven.tools.plugin.generator.GeneratorUtils;
import org.apache.maven.tools.plugin.scanner.MojoScanner; import org.apache.maven.tools.plugin.scanner.MojoScanner;
import org.codehaus.plexus.component.repository.ComponentDependency;
import org.codehaus.plexus.util.ReaderFactory; 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;
@ -58,7 +54,7 @@ public abstract class AbstractGeneratorMojo
/** /**
* The project currently being built. * The project currently being built.
*/ */
@Parameter( defaultValue = "${project}", readonly = true ) @Component
protected MavenProject project; protected MavenProject project;
/** /**
@ -133,16 +129,6 @@ 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 not specified in the configuration, this is {@code null} and all dependencies are scanned.
* If specified with no children, 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
* *
@ -236,47 +222,21 @@ public abstract class AbstractGeneratorMojo
if ( encoding == null || encoding.length() < 1 ) if ( encoding == null || encoding.length() < 1 )
{ {
getLog().warn( "Using platform encoding (" + ReaderFactory.FILE_ENCODING getLog().warn( "Using platform encoding (" + ReaderFactory.FILE_ENCODING
+ " actually) to read mojo source files, i.e. build is platform dependent!" ); + " actually) to read mojo metadata, i.e. build is platform dependent!" );
} }
else else
{ {
getLog().info( "Using '" + encoding + "' encoding to read mojo source files." ); getLog().info( "Using '" + encoding + "' encoding to read mojo metadata." );
} }
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() ); pluginDescriptor.setDependencies( GeneratorUtils.toComponentDependencies( project.getRuntimeDependencies() ) );
pluginDescriptor.setDependencies( deps );
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( requestDependencies ); request.setDependencies( dependencies );
request.setLocal( this.local ); request.setLocal( this.local );
request.setRemoteRepos( this.remoteRepos ); request.setRemoteRepos( this.remoteRepos );

View File

@ -38,8 +38,7 @@ import org.codehaus.plexus.velocity.VelocityComponent;
* @version $Id$ * @version $Id$
* @since 2.4 * @since 2.4
*/ */
@Mojo( name = "helpmojo", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true, @Mojo( name = "helpmojo", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true, requiresDependencyResolution = ResolutionScope.COMPILE )
requiresDependencyResolution = ResolutionScope.COMPILE )
public class HelpGeneratorMojo public class HelpGeneratorMojo
extends AbstractGeneratorMojo extends AbstractGeneratorMojo
{ {
@ -86,9 +85,6 @@ public class HelpGeneratorMojo
public void execute() public void execute()
throws MojoExecutionException throws MojoExecutionException
{ {
// force value for this plugin
skipErrorNoDescriptorsFound = true;
super.execute(); super.execute();
if ( !project.getCompileSourceRoots().contains( outputDirectory.getAbsolutePath() ) && !skip ) if ( !project.getCompileSourceRoots().contains( outputDirectory.getAbsolutePath() ) && !skip )

View File

@ -19,35 +19,20 @@ package org.apache.maven.plugin.plugin;
* under the License. * under the License.
*/ */
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
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.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.siterenderer.Renderer; import org.apache.maven.doxia.siterenderer.Renderer;
import org.apache.maven.execution.RuntimeInformation;
import org.apache.maven.model.Plugin; import org.apache.maven.model.Plugin;
import org.apache.maven.model.ReportPlugin;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.plugin.descriptor.MNG6109PluginDescriptorBuilder;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.AbstractMavenReport;
import org.apache.maven.reporting.AbstractMavenReportRenderer; import org.apache.maven.reporting.AbstractMavenReportRenderer;
@ -60,14 +45,20 @@ import org.apache.maven.tools.plugin.generator.GeneratorUtils;
import org.apache.maven.tools.plugin.generator.PluginXdocGenerator; import org.apache.maven.tools.plugin.generator.PluginXdocGenerator;
import org.apache.maven.tools.plugin.scanner.MojoScanner; import org.apache.maven.tools.plugin.scanner.MojoScanner;
import org.apache.maven.tools.plugin.util.PluginUtils; import org.apache.maven.tools.plugin.util.PluginUtils;
import org.codehaus.plexus.component.repository.ComponentDependency;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3Dom;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
/** /**
* Generates the Plugin's documentation report: <code>plugin-info.html</code> plugin overview page, * Generates the Plugin's documentation report.
* and one <code><i>goal</i>-mojo.html</code> per goal.
* *
* @author <a href="snicoll@apache.org">Stephane Nicoll</a> * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a> * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
@ -80,7 +71,7 @@ public class PluginReport
extends AbstractMavenReport extends AbstractMavenReport
{ {
/** /**
* Report output directory for mojos' documentation. * Report output directory for mojo pages.
*/ */
@Parameter( defaultValue = "${project.build.directory}/generated-site/xdoc" ) @Parameter( defaultValue = "${project.build.directory}/generated-site/xdoc" )
private File outputDirectory; private File outputDirectory;
@ -94,7 +85,7 @@ public class PluginReport
/** /**
* The Maven Project. * The Maven Project.
*/ */
@Parameter( defaultValue = "${project}", readonly = true ) @Component
private MavenProject project; private MavenProject project;
/** /**
@ -191,12 +182,6 @@ public class PluginReport
@Parameter( defaultValue = "${localRepository}", required = true, readonly = true ) @Parameter( defaultValue = "${localRepository}", required = true, readonly = true )
protected ArtifactRepository local; protected ArtifactRepository local;
/**
* @since 3.5.1
*/
@Component
private RuntimeInformation rtInfo;
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@ -233,6 +218,7 @@ public class PluginReport
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@SuppressWarnings( "unchecked" )
protected void executeReport( Locale locale ) protected void executeReport( Locale locale )
throws MavenReportException throws MavenReportException
{ {
@ -246,36 +232,6 @@ public class PluginReport
return; return;
} }
PluginDescriptor pluginDescriptor = extractPluginDescriptor();
// Generate the mojos' documentation
generateMojosDocumentation( pluginDescriptor, locale );
// Write the overview
PluginOverviewRenderer r =
new PluginOverviewRenderer( project, requirements, getSink(), pluginDescriptor, locale );
r.render();
}
private PluginDescriptor extractPluginDescriptor()
throws MavenReportException
{
PluginDescriptorBuilder builder = getPluginDescriptorBuilder();
try
{
return builder.build( new FileReader( new File( project.getBuild().getOutputDirectory(),
"META-INF/maven/plugin.xml" ) ) );
}
catch ( FileNotFoundException e )
{
getLog().debug( "Failed to read META-INF/maven/plugin.xml, fall back to mojoScanner" );
}
catch ( PlexusConfigurationException e )
{
getLog().debug( "Failed to read META-INF/maven/plugin.xml, fall back to mojoScanner" );
}
// Copy from AbstractGeneratorMojo#execute() // Copy from AbstractGeneratorMojo#execute()
String defaultGoalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() ); String defaultGoalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() );
if ( goalPrefix == null ) if ( goalPrefix == null )
@ -301,9 +257,7 @@ public class PluginReport
try try
{ {
@SuppressWarnings( "unchecked" ) pluginDescriptor.setDependencies( GeneratorUtils.toComponentDependencies( project.getRuntimeDependencies() ) );
List<ComponentDependency> deps = GeneratorUtils.toComponentDependencies( project.getRuntimeDependencies() );
pluginDescriptor.setDependencies( deps );
PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
request.setEncoding( encoding ); request.setEncoding( encoding );
@ -312,6 +266,7 @@ public class PluginReport
request.setLocal( this.local ); request.setLocal( this.local );
request.setRemoteRepos( this.remoteRepos ); request.setRemoteRepos( this.remoteRepos );
try try
{ {
mojoScanner.populatePluginDescriptor( request ); mojoScanner.populatePluginDescriptor( request );
@ -320,46 +275,23 @@ public class PluginReport
{ {
// this is OK, it happens to lifecycle plugins. Allow generation to proceed. // this is OK, it happens to lifecycle plugins. Allow generation to proceed.
getLog().debug( "Plugin without mojos.", e ); getLog().debug( "Plugin without mojos.", e );
} }
// Generate the plugin's documentation
generatePluginDocumentation( pluginDescriptor, locale );
// Write the overview
PluginOverviewRenderer r =
new PluginOverviewRenderer( project, requirements, getSink(), pluginDescriptor, locale );
r.render();
} }
catch ( ExtractionException e ) catch ( ExtractionException e )
{ {
throw new MavenReportException( "Error extracting plugin descriptor: \'" + e.getLocalizedMessage() + "\'", throw new MavenReportException( "Error extracting plugin descriptor: \'" + e.getLocalizedMessage() + "\'",
e ); e );
} }
return pluginDescriptor;
}
/**
* Return the pluginDescriptorBuilder to use based on the Maven version: either use the original from the
* maven-plugin-api or a patched version for Maven versions before the MNG-6109 fix
* (because of Maven MNG-6109 bug that won't give accurate 'since' info when reading plugin.xml).
*
* @return the proper pluginDescriptorBuilder
* @see https://issues.apache.org/jira/browse/MNG-6109
* @see https://issues.apache.org/jira/browse/MPLUGIN-319
*/
private PluginDescriptorBuilder getPluginDescriptorBuilder()
{
PluginDescriptorBuilder pluginDescriptorBuilder;
try
{
VersionRange versionRange = VersionRange.createFromVersionSpec( "(3.3.9,)" );
if ( versionRange.containsVersion( rtInfo.getApplicationVersion() ) )
{
pluginDescriptorBuilder = new PluginDescriptorBuilder();
}
else
{
pluginDescriptorBuilder = new MNG6109PluginDescriptorBuilder();
}
}
catch ( InvalidVersionSpecificationException e )
{
return new MNG6109PluginDescriptorBuilder();
}
return pluginDescriptorBuilder;
} }
/** /**
@ -387,13 +319,11 @@ public class PluginReport
} }
/** /**
* Generate the mojos documentation, as xdoc files.
*
* @param pluginDescriptor not null * @param pluginDescriptor not null
* @param locale not null * @param locale not null
* @throws MavenReportException if any * @throws MavenReportException if any
*/ */
private void generateMojosDocumentation( PluginDescriptor pluginDescriptor, Locale locale ) private void generatePluginDocumentation( PluginDescriptor pluginDescriptor, Locale locale )
throws MavenReportException throws MavenReportException
{ {
try try
@ -723,13 +653,10 @@ public class PluginReport
} }
/** /**
* <ol> * Try to lookup on the <code>org.apache.maven.plugins:maven-compiler-plugin</code> plugin to
* <li>use configured jdk requirement</li> * find the value of the <code>target</code> option.
* <li>use <code>target</code> configuration of <code>org.apache.maven.plugins:maven-compiler-plugin</code></li> * If not specified, uses the value defined by the user.
* <li>use <code>target</code> configuration of <code>org.apache.maven.plugins:maven-compiler-plugin</code> in * If not specified, uses the value of the system property <code>java.specification.version</code>.
* <code>pluginManagement</code></li>
* <li>use <code>maven.compiler.target</code> property</li>
* </ol>
* *
* @param project not null * @param project not null
* @param requirements not null * @param requirements not null
@ -738,67 +665,84 @@ public class PluginReport
private static String discoverJdkRequirement( MavenProject project, Requirements requirements ) private static String discoverJdkRequirement( MavenProject project, Requirements requirements )
{ {
String jdk = requirements.getJdk(); String jdk = requirements.getJdk();
if ( jdk == null )
if ( jdk != null )
{ {
jdk = discoverJdkRequirementFromPlugins( project.getBuild().getPluginsAsMap() );
}
if ( jdk == null && project.getPluginManagement() != null )
{
jdk = discoverJdkRequirementFromPlugins( project.getPluginManagement().getPluginsAsMap() );
}
if ( jdk == null )
{
jdk = "Unknown";
}
return jdk; return jdk;
} }
@SuppressWarnings( "unchecked" ) /**
Plugin compiler = getCompilerPlugin( project.getBuild().getPluginsAsMap() ); * @param pluginsAsMap could be null
if ( compiler == null ) * @return the value of the <code>target</code> in the configuration of <code>maven-compiler-plugin</code>.
*/
@SuppressWarnings( "rawtypes" )
private static String discoverJdkRequirementFromPlugins( Map pluginsAsMap )
{ {
compiler = getCompilerPlugin( project.getPluginManagement().getPluginsAsMap() ); if ( pluginsAsMap == null )
}
jdk = getPluginParameter( compiler, "target" );
if ( jdk != null )
{ {
return jdk;
}
// default value
jdk = project.getProperties().getProperty( "maven.compiler.target" );
if ( jdk != null )
{
return jdk;
}
// return "1.5" by default?
String version = ( compiler == null ) ? null : compiler.getVersion();
if ( version != null )
{
return "Default target for maven-compiler-plugin version " + version;
}
return "Unknown";
}
private static Plugin getCompilerPlugin( Map<String, Object> pluginsAsMap )
{
return (Plugin) pluginsAsMap.get( "org.apache.maven.plugins:maven-compiler-plugin" );
}
private static String getPluginParameter( Plugin plugin, String parameter )
{
if ( plugin != null )
{
Xpp3Dom pluginConf = (Xpp3Dom) plugin.getConfiguration();
if ( pluginConf != null )
{
Xpp3Dom target = pluginConf.getChild( parameter );
if ( target != null )
{
return target.getValue();
}
}
}
return null; return null;
} }
String jdk = null;
String backupJdk = null;
for ( Iterator it = pluginsAsMap.keySet().iterator(); it.hasNext(); )
{
String key = it.next().toString();
if ( !key.equals( "org.apache.maven.plugins:maven-compiler-plugin" ) )
{
continue;
}
Object value = pluginsAsMap.get( key );
Xpp3Dom pluginConf = null;
backupJdk = "Default version for maven-compiler-plugin";
if ( value instanceof Plugin )
{
Plugin plugin = (Plugin) value;
backupJdk = "Default target for maven-compiler-plugin version " + plugin.getVersion();
pluginConf = (Xpp3Dom) plugin.getConfiguration();
}
if ( value instanceof ReportPlugin )
{
ReportPlugin reportPlugin = (ReportPlugin) value;
backupJdk = "Default target for maven-compiler-plugin version " + reportPlugin.getVersion();
pluginConf = (Xpp3Dom) reportPlugin.getConfiguration();
}
if ( pluginConf == null )
{
continue;
}
if ( pluginConf.getChild( "target" ) == null )
{
continue;
}
jdk = pluginConf.getChild( "target" ).getValue();
}
if ( jdk == null )
{
return backupJdk;
}
else
{
return jdk;
}
}
} }
} }

View File

@ -1,4 +1,4 @@
package test; package org.apache.maven.plugin.plugin;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -19,19 +19,39 @@ package test;
* under the License. * under the License.
*/ */
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.tools.plugin.generator.Generator;
import org.apache.maven.tools.plugin.generator.PluginXdocGenerator;
@Mojo( name= "test" ) import java.io.File;
public class MyMojo
extends AbstractMojo
{
@Parameter
private String empyAnnotatedParameter;
public void execute() /**
* Generate Xdoc files for the project mojos or goals.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$
* @since 2.0
*/
@Mojo( name = "xdoc", threadSafe = true )
public class XdocGeneratorMojo
extends AbstractGeneratorMojo
{ {
/**
* The directory where the generated Xdoc files will be put.
*/
@Parameter( defaultValue = "${project.build.directory}/generated-site/xdoc" )
protected File outputDirectory;
/** {@inheritDoc} */
protected File getOutputDirectory()
{
return outputDirectory;
} }
/** {@inheritDoc} */
protected Generator createGenerator()
{
return new PluginXdocGenerator( project );
}
} }

View File

@ -26,6 +26,7 @@ import org.apache.maven.artifact.repository.metadata.Versioning;
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.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
@ -37,8 +38,7 @@ import org.apache.maven.project.MavenProject;
* artifact, for subsequent installation and deployment. * artifact, for subsequent installation and deployment.
* It is used: * It is used:
* <ol> * <ol>
* <li>to add the <code>latest</code> metadata (which is plugin-specific) for shipping alongside the plugin's * <li>to add the <code>latest</code> metadata (which is plugin-specific) for shipping alongside the plugin's artifact</li>
* artifact</li>
* <li>to define plugin mapping in the group</li> * <li>to define plugin mapping in the group</li>
* </ol> * </ol>
* *
@ -54,7 +54,7 @@ public class AddPluginArtifactMetadataMojo
/** /**
* The project artifact, which should have the <code>latest</code> metadata added to it. * The project artifact, which should have the <code>latest</code> metadata added to it.
*/ */
@Parameter( defaultValue = "${project}", readonly = true ) @Component
private MavenProject project; private MavenProject project;
/** /**

View File

@ -1,62 +0,0 @@
package org.apache.maven.plugins.plugin.descriptor;
/*
* 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 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.descriptor.PluginDescriptorBuilder;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
/**
* Reads the plugin descriptor and adds the fix for MNG-6109 when using Maven-3.3.9 and before.
* Class can be removed once Maven 3.5.0 is the prerequisite for this plugin.
*
* @author Robert Scholte
* @since 3.5.1
*/
public class MNG6109PluginDescriptorBuilder extends PluginDescriptorBuilder
{
@Override
public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c, PluginDescriptor pluginDescriptor )
throws PlexusConfigurationException
{
MojoDescriptor mojoDescriptor = super.buildComponentDescriptor( c, pluginDescriptor );
// ----------------------------------------------------------------------
// Parameters
// ----------------------------------------------------------------------
PlexusConfiguration[] parameterConfigurations = c.getChild( "parameters" ).getChildren( "parameter" );
for ( PlexusConfiguration d : parameterConfigurations )
{
String parameterName = d.getChild( "name" ).getValue();
Parameter pd = (Parameter) mojoDescriptor.getParameterMap().get( parameterName );
String parameterSince = d.getChild( "since" ).getValue();
pd.setSince( parameterSince );
}
return mojoDescriptor;
}
}

View File

@ -24,18 +24,16 @@
~~ under the License. ~~ under the License.
~~ NOTE: For help with the syntax of this file, see: ~~ NOTE: For help with the syntax of this file, see:
~~ https://maven.apache.org/doxia/references/apt-format.html ~~ http://maven.apache.org/doxia/references/apt-format.html
Using Plugin Tools Java5 Annotations Using Plugin Tools Java5 Annotations
Since version 3.0 of the maven-plugin-plugin, you can use Java5 annotations to generate the Since version 3.0, you can use Java5 annotations to generate the plugin descriptor file.
plugin descriptor file.
<<NOTE>> With annotations, your Mojo super class does not any more require to be in the same project. Provided that the super class also uses annotations, it <<NOTE>> With annotations, your Mojo super class does not any more require to be in the same project. Provided that the super class also uses annotations, it
can now come from reactor projects or external dependencies. By default all dependencies are scanned, but this can be reduced with the <<<mojoDependencies>>> can now come from reactor projects or external dependencies. As javadoc doclet are still useful for <<<@since>>>, <<<@deprecated>>> and comments,
parameter. As javadoc doclet are still useful for <<<@since>>>, <<<@deprecated>>> and comments, the sources are still scanned. So if you use an external the sources are still scanned. So if you use an external dependency, you must still provide an artifact with sources (<<<sources>>> classifier) to
dependency, you must still provide an artifact with sources (<<<sources>>> classifier) to provide documentation (the tooling will skip error if this artifact provide documentation (the tooling will skip error if this artifact sources is missing).
sources is missing).
* Annotations * Annotations
@ -79,7 +77,10 @@ Using Plugin Tools Java5 Annotations
* add <<<maven-plugin-annotations>>> dependency, preferably with <<<provided>>> scope, * add <<<maven-plugin-annotations>>> dependency, preferably with <<<provided>>> scope,
* override Maven core's <<<default-descriptor>>> execution phase to <<<process-classes>>>, * bind goals to <<<process-classes>>> phase,
* configure <<<skipErrorNoDescriptorsFound>>> parameter to avoid failure caused by
{{{http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_maven-plugin_packaging}default <<<descriptor>>> goal binding to <<<generate-resources>>> phase}}.
[] []
@ -94,7 +95,7 @@ Using Plugin Tools Java5 Annotations
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId> <artifactId>maven-plugin-annotations</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<optional>true</optional> <!-- annotations are not used at runtime because @Retention(value=CLASS), they are needed only to build the plugin --> <scope>provided</scope><!-- annotations are needed only to build the plugin -->
</dependency> </dependency>
</dependencies> </dependencies>
... ...
@ -104,10 +105,16 @@ Using Plugin Tools Java5 Annotations
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId> <artifactId>maven-plugin-plugin</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<configuration>
<!-- see http://jira.codehaus.org/browse/MNG-5346 -->
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions> <executions>
<execution> <execution>
<id>default-descriptor</id> <id>mojo-descriptor</id>
<phase>process-classes</phase> <goals>
<goal>descriptor</goal>
</goals>
</execution> </execution>
<!-- if you want to generate help goal --> <!-- if you want to generate help goal -->
<execution> <execution>
@ -124,44 +131,3 @@ Using Plugin Tools Java5 Annotations
... ...
</project> </project>
+-----+ +-----+
<Notice>: this configuration will not work with Maven 2, which does not support execution phase overriding.
If you absolutely need to build with Maven 2, you should use <<<skipErrorNoDescriptorsFound>>> parameter
to avoid failure on default execution phase and add another execution:
+-----+
<project>
...
<profiles>
<profile>
<id>maven-2</id>
<activation>
<file>
<!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->
<missing>${basedir}</missing>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<configuration>
<!-- see https://issues.apache.org/jira/browse/MNG-5346 -->
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
+-----+

View File

@ -39,8 +39,10 @@ Maven Plugin Plugin
* {{{./descriptor-mojo.html}plugin:descriptor}} generates a plugin descriptor, * {{{./descriptor-mojo.html}plugin:descriptor}} generates a plugin descriptor,
* {{{./report-mojo.html}plugin:report}} generates the plugin documentation: one overview report * {{{./report-mojo.html}plugin:report}} generates the plugin documentation report, listing each goal provided
(see {{{./plugin-info.html}example}}) and documentation for each plugin's goal (mojo), and general configuration information (see {{{./plugin-info.html}example}}),
* {{{./xdoc-mojo.html}plugin:xdoc}} generates documentation (as xdoc files) for each mojo (goals),
* {{{./updateRegistry-mojo.html}plugin:updateRegistry}} updates the user plugin registry (if it's in use) to * {{{./updateRegistry-mojo.html}plugin:updateRegistry}} updates the user plugin registry (if it's in use) to
reflect the version being installed, reflect the version being installed,

View File

@ -54,18 +54,15 @@ mvn package
mvn plugin:descriptor mvn plugin:descriptor
+-----+ +-----+
* The <<<plugin:report>>> Goal * The <<<plugin:xdoc>>> Goal
To generate the documentation of your plugin, execute the following on the command line: To generate Xdoc files for the mojos of your plugin, execute the following on the command line:
+-----+ +-----+
mvn plugin:report mvn plugin:xdoc
+-----+ +-----+
The xdoc files, one per goal, are generated by default in <<<$\{project.build.directory\}/generated-site/xdoc>>>, The xdoc file is generated by default in <<<$\{project.build.directory\}/generated-site/xdoc>>>.
and an overview is generated in the site output.
If you add the plugin to the <<<reporting>>> section of your pom, you'll get the full report as html with <<<mvn site>>>.
* The <<<plugin:updateRegistry>>> Goal * The <<<plugin:updateRegistry>>> Goal

View File

@ -29,13 +29,13 @@ under the License.
<href>http://maven.apache.org/</href> <href>http://maven.apache.org/</href>
</bannerLeft> </bannerLeft>
<bannerRight> <bannerRight>
<src>https://maven.apache.org/images/maven-logo-black-on-white.png</src> <src>http://maven.apache.org/images/maventxt_logo_200.gif</src>
</bannerRight> </bannerRight>
<skin> <skin>
<groupId>org.apache.maven.skins</groupId> <groupId>org.apache.maven.skins</groupId>
<artifactId>maven-fluido-skin</artifactId> <artifactId>maven-fluido-skin</artifactId>
<version>1.5</version> <version>1.2.1</version>
</skin> </skin>
<custom> <custom>
@ -53,9 +53,6 @@ under the License.
<item name="Usage" href="usage.html"/> <item name="Usage" href="usage.html"/>
<item name="FAQ" href="faq.html"/> <item name="FAQ" href="faq.html"/>
<item name="Release Notes" href="jira-report.html"/> <item name="Release Notes" href="jira-report.html"/>
<!-- According to https://issues.apache.org/jira/browse/MNGSITE-152 -->
<item name="License" href="http://www.apache.org/licenses/"/>
<item name="Download" href="../download.html"/>
</menu> </menu>
<menu name="Examples"> <menu name="Examples">

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId> <artifactId>maven-plugin-tools</artifactId>
<version>3.5.1-SNAPSHOT</version> <version>3.3</version>
</parent> </parent>
<artifactId>maven-plugin-tools-annotations</artifactId> <artifactId>maven-plugin-tools-annotations</artifactId>
@ -70,6 +70,10 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.ow2.asm</groupId> <groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId> <artifactId>asm</artifactId>
@ -97,10 +101,6 @@
</exclusions> </exclusions>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
</dependency>
</dependencies> </dependencies>

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations; package org.apache.maven.tools.plugin.annotations;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -19,22 +19,10 @@ package org.apache.maven.tools.plugin.extractor.annotations;
* under the License. * under the License.
*/ */
import java.io.File; import com.thoughtworks.qdox.JavaDocBuilder;
import java.net.MalformedURLException; import com.thoughtworks.qdox.model.DocletTag;
import java.net.URL; import com.thoughtworks.qdox.model.JavaClass;
import java.net.URLClassLoader; import com.thoughtworks.qdox.model.JavaField;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
@ -49,15 +37,15 @@ import org.apache.maven.plugin.descriptor.Requirement;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
import org.apache.maven.tools.plugin.ExtendedMojoDescriptor; import org.apache.maven.tools.plugin.ExtendedMojoDescriptor;
import org.apache.maven.tools.plugin.PluginToolsRequest; import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.ExecuteAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.MojoAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.ParameterAnnotationContent;
import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotatedClass;
import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner;
import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScannerRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException; import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor; import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ExecuteAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.MojoAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ParameterAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotatedClass;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScannerRequest;
import org.apache.maven.tools.plugin.util.PluginUtils; import org.apache.maven.tools.plugin.util.PluginUtils;
import org.codehaus.plexus.archiver.UnArchiver; import org.codehaus.plexus.archiver.UnArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager; import org.codehaus.plexus.archiver.manager.ArchiverManager;
@ -66,11 +54,18 @@ import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
import com.thoughtworks.qdox.JavaProjectBuilder; import java.io.File;
import com.thoughtworks.qdox.library.SortedClassLibraryBuilder; import java.util.ArrayList;
import com.thoughtworks.qdox.model.DocletTag; import java.util.Arrays;
import com.thoughtworks.qdox.model.JavaClass; import java.util.Collection;
import com.thoughtworks.qdox.model.JavaField; import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
/** /**
* JavaMojoDescriptorExtractor, a MojoDescriptor extractor to read descriptors from java classes with annotations. * JavaMojoDescriptorExtractor, a MojoDescriptor extractor to read descriptors from java classes with annotations.
@ -224,8 +219,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
unArchiver.setDestDirectory( extractDirectory ); unArchiver.setDestDirectory( extractDirectory );
unArchiver.extract(); unArchiver.extract();
return discoverClasses( request.getEncoding(), Arrays.asList( extractDirectory ), return discoverClasses( request.getEncoding(), Arrays.asList( extractDirectory ) );
request.getDependencies() );
} }
catch ( ArtifactResolutionException e ) catch ( ArtifactResolutionException e )
{ {
@ -289,8 +283,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
Map<String, ParameterAnnotationContent> parameters = Map<String, ParameterAnnotationContent> parameters =
getParametersParentHierarchy( entry.getValue(), new HashMap<String, ParameterAnnotationContent>(), getParametersParentHierarchy( entry.getValue(), new HashMap<String, ParameterAnnotationContent>(),
mojoAnnotatedClasses ); mojoAnnotatedClasses );
parameters = new TreeMap<String, ParameterAnnotationContent>( parameters ); for ( Map.Entry<String, ParameterAnnotationContent> parameter : new TreeMap<String, ParameterAnnotationContent>(
for ( Map.Entry<String, ParameterAnnotationContent> parameter : parameters.entrySet() ) parameters ).entrySet() )
{ {
JavaField javaField = fieldsMap.get( parameter.getKey() ); JavaField javaField = fieldsMap.get( parameter.getKey() );
if ( javaField == null ) if ( javaField == null )
@ -315,8 +309,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
} }
// populate components // populate components
Map<String, ComponentAnnotationContent> components = entry.getValue().getComponents(); for ( Map.Entry<String, ComponentAnnotationContent> component : entry.getValue().getComponents().entrySet() )
for ( Map.Entry<String, ComponentAnnotationContent> component : components.entrySet() )
{ {
JavaField javaField = fieldsMap.get( component.getKey() ); JavaField javaField = fieldsMap.get( component.getKey() );
if ( javaField == null ) if ( javaField == null )
@ -383,7 +376,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
if ( superClass != null ) if ( superClass != null )
{ {
if ( superClass.getFields().size() > 0 ) if ( superClass.getFields().length > 0 )
{ {
rawParams = extractFieldParameterTags( superClass, javaClassesMap ); rawParams = extractFieldParameterTags( superClass, javaClassesMap );
} }
@ -400,11 +393,15 @@ public class JavaAnnotationsMojoDescriptorExtractor
rawParams = new TreeMap<String, JavaField>(); rawParams = new TreeMap<String, JavaField>();
} }
for ( JavaField field : javaClass.getFields() ) JavaField[] classFields = javaClass.getFields();
if ( classFields != null )
{
for ( JavaField field : classFields )
{ {
rawParams.put( field.getName(), field ); rawParams.put( field.getName(), field );
} }
}
return rawParams; return rawParams;
} }
@ -431,43 +428,27 @@ public class JavaAnnotationsMojoDescriptorExtractor
sources.add( generatedPlugin ); sources.add( generatedPlugin );
} }
return discoverClasses( encoding, sources, project.getArtifacts() ); return discoverClasses( encoding, sources );
} }
protected Map<String, JavaClass> discoverClasses( final String encoding, List<File> sourceDirectories, protected Map<String, JavaClass> discoverClasses( final String encoding, List<File> sourceDirectories )
Set<Artifact> artifacts )
{ {
JavaProjectBuilder builder = new JavaProjectBuilder( new SortedClassLibraryBuilder() ); JavaDocBuilder builder = new JavaDocBuilder();
builder.setEncoding( encoding ); builder.setEncoding( encoding );
// Build isolated Classloader with only the artifacts of the project (none of this plugin)
List<URL> urls = new ArrayList<URL>( artifacts.size() );
for ( Artifact artifact : artifacts )
{
try
{
urls.add( artifact.getFile().toURI().toURL() );
}
catch ( MalformedURLException e )
{
// noop
}
}
builder.addClassLoader( new URLClassLoader( urls.toArray( new URL[0] ), ClassLoader.getSystemClassLoader() ) );
for ( File source : sourceDirectories ) for ( File source : sourceDirectories )
{ {
builder.addSourceTree( source ); builder.addSourceTree( source );
} }
Collection<JavaClass> javaClasses = builder.getClasses(); JavaClass[] javaClasses = builder.getClasses();
if ( javaClasses == null || javaClasses.size() < 1 ) if ( javaClasses == null || javaClasses.length < 1 )
{ {
return Collections.emptyMap(); return Collections.emptyMap();
} }
Map<String, JavaClass> javaClassMap = new HashMap<String, JavaClass>( javaClasses.size() ); Map<String, JavaClass> javaClassMap = new HashMap<String, JavaClass>( javaClasses.length );
for ( JavaClass javaClass : javaClasses ) for ( JavaClass javaClass : javaClasses )
{ {
@ -599,10 +580,9 @@ public class JavaAnnotationsMojoDescriptorExtractor
else else
{ {
// not a component but a Maven object to be transformed into an expression/property: deprecated // not a component but a Maven object to be transformed into an expression/property: deprecated
getLogger().warn( "Deprecated @Component annotation for '" + parameter.getName() + "' field in " getLogger().warn( "Deprecated @component for " + parameter.getName() + " field in "
+ mojoAnnotatedClass.getClassName() + mojoAnnotatedClass.getClassName() + "."
+ ": replace with @Parameter( defaultValue = \"" + expression + ": replace with @parameter name=\"" + expression + "\" @readonly" );
+ "\", readonly = true )" );
parameter.setDefaultValue( expression ); parameter.setDefaultValue( expression );
parameter.setType( componentAnnotationContent.getRoleClassName() ); parameter.setType( componentAnnotationContent.getRoleClassName() );
parameter.setRequired( true ); parameter.setRequired( true );

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.datamodel; package org.apache.maven.tools.plugin.annotations.datamodel;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -20,6 +20,7 @@ package org.apache.maven.tools.plugin.extractor.annotations.datamodel;
*/ */
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.util.StringUtils;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner; package org.apache.maven.tools.plugin.annotations.scanner;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -19,31 +19,19 @@ package org.apache.maven.tools.plugin.extractor.annotations.scanner;
* under the License. * under the License.
*/ */
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.ExecuteAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.MojoAnnotationContent;
import org.apache.maven.tools.plugin.annotations.datamodel.ParameterAnnotationContent;
import org.apache.maven.tools.plugin.annotations.scanner.visitors.MojoAnnotationVisitor;
import org.apache.maven.tools.plugin.annotations.scanner.visitors.MojoClassVisitor;
import org.apache.maven.tools.plugin.annotations.scanner.visitors.MojoFieldVisitor;
import org.apache.maven.tools.plugin.extractor.ExtractionException; import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ExecuteAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.MojoAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ParameterAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors.MojoAnnotationVisitor;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors.MojoClassVisitor;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors.MojoFieldVisitor;
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.DirectoryScanner; import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.IOUtil;
@ -53,6 +41,17 @@ import org.codehaus.plexus.util.reflection.ReflectorException;
import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassReader;
import org.objectweb.asm.Type; import org.objectweb.asm.Type;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/** /**
* @author Olivier Lamy * @author Olivier Lamy
* @since 3.0 * @since 3.0
@ -62,9 +61,6 @@ public class DefaultMojoAnnotationsScanner
extends AbstractLogEnabled extends AbstractLogEnabled
implements MojoAnnotationsScanner implements MojoAnnotationsScanner
{ {
// classes with a dash must be ignored
private static final Pattern SCANNABLE_CLASS = Pattern.compile( "[^-]+\\.class" );
private Reflector reflector = new Reflector(); private Reflector reflector = new Reflector();
public Map<String, MojoAnnotatedClass> scan( MojoAnnotationsScannerRequest request ) public Map<String, MojoAnnotatedClass> scan( MojoAnnotationsScannerRequest request )
@ -119,7 +115,7 @@ public class DefaultMojoAnnotationsScanner
* @param archiveFile * @param archiveFile
* @param artifact * @param artifact
* @param excludeMojo for dependencies, we exclude Mojo annotations found * @param excludeMojo for dependencies, we exclude Mojo annotations found
* @return annotated classes found * @return
* @throws IOException * @throws IOException
* @throws ExtractionException * @throws ExtractionException
*/ */
@ -130,28 +126,19 @@ public class DefaultMojoAnnotationsScanner
ZipInputStream archiveStream = new ZipInputStream( new FileInputStream( archiveFile ) ); ZipInputStream archiveStream = new ZipInputStream( new FileInputStream( archiveFile ) );
String zipEntryName = null;
try try
{ {
for ( ZipEntry zipEntry = archiveStream.getNextEntry(); zipEntry != null; for ( ZipEntry zipEntry = archiveStream.getNextEntry(); zipEntry != null;
zipEntry = archiveStream.getNextEntry() ) zipEntry = archiveStream.getNextEntry() )
{ {
zipEntryName = zipEntry.getName(); if ( !zipEntry.getName().endsWith( ".class" ) )
if ( !SCANNABLE_CLASS.matcher( zipEntryName ).matches() )
{ {
continue; continue;
} }
analyzeClassStream( mojoAnnotatedClasses, archiveStream, artifact, excludeMojo ); analyzeClassStream( mojoAnnotatedClasses, archiveStream, artifact, excludeMojo );
} }
} }
catch ( IllegalArgumentException e )
{
// In case of a class with newer specs an IllegalArgumentException can be thrown
getLogger().error( "Failed to analyze " + archiveFile.getAbsolutePath() + "!/" + zipEntryName );
throw e;
}
finally finally
{ {
IOUtil.close( archiveStream ); IOUtil.close( archiveStream );
@ -165,7 +152,7 @@ public class DefaultMojoAnnotationsScanner
* @param includePatterns * @param includePatterns
* @param artifact * @param artifact
* @param excludeMojo for dependencies, we exclude Mojo annotations found * @param excludeMojo for dependencies, we exclude Mojo annotations found
* @return annotated classes found * @return
* @throws IOException * @throws IOException
* @throws ExtractionException * @throws ExtractionException
*/ */
@ -187,7 +174,7 @@ public class DefaultMojoAnnotationsScanner
for ( String classFile : classFiles ) for ( String classFile : classFiles )
{ {
if ( !SCANNABLE_CLASS.matcher( classFile ).matches() ) if ( !classFile.endsWith( ".class" ) )
{ {
continue; continue;
} }
@ -277,8 +264,7 @@ public class DefaultMojoAnnotationsScanner
new ParameterAnnotationContent( mojoFieldVisitor.getFieldName(), mojoFieldVisitor.getClassName() ); new ParameterAnnotationContent( mojoFieldVisitor.getFieldName(), mojoFieldVisitor.getClassName() );
if ( mojoFieldVisitor.getMojoAnnotationVisitor() != null ) if ( mojoFieldVisitor.getMojoAnnotationVisitor() != null )
{ {
populateAnnotationContent( parameterAnnotationContent, populateAnnotationContent( parameterAnnotationContent, mojoFieldVisitor.getMojoAnnotationVisitor() );
mojoFieldVisitor.getMojoAnnotationVisitor() );
} }
mojoAnnotatedClass.getParameters().put( parameterAnnotationContent.getFieldName(), mojoAnnotatedClass.getParameters().put( parameterAnnotationContent.getFieldName(),
@ -292,10 +278,9 @@ public class DefaultMojoAnnotationsScanner
ComponentAnnotationContent componentAnnotationContent = ComponentAnnotationContent componentAnnotationContent =
new ComponentAnnotationContent( mojoFieldVisitor.getFieldName() ); new ComponentAnnotationContent( mojoFieldVisitor.getFieldName() );
MojoAnnotationVisitor annotationVisitor = mojoFieldVisitor.getMojoAnnotationVisitor(); if ( mojoFieldVisitor.getMojoAnnotationVisitor() != null )
if ( annotationVisitor != null )
{ {
for ( Map.Entry<String, Object> entry : annotationVisitor.getAnnotationValues().entrySet() ) for ( Map.Entry<String, Object> entry : mojoFieldVisitor.getMojoAnnotationVisitor().getAnnotationValues().entrySet() )
{ {
String methodName = entry.getKey(); String methodName = entry.getKey();
if ( StringUtils.equals( "role", methodName ) ) if ( StringUtils.equals( "role", methodName ) )

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner; package org.apache.maven.tools.plugin.annotations.scanner;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -20,10 +20,10 @@ package org.apache.maven.tools.plugin.extractor.annotations.scanner;
*/ */
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ComponentAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ExecuteAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ExecuteAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.MojoAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.MojoAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ParameterAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ParameterAnnotationContent;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner; package org.apache.maven.tools.plugin.annotations.scanner;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -37,9 +37,9 @@ public interface MojoAnnotationsScanner
{ {
String ROLE = MojoAnnotationsScanner.class.getName(); String ROLE = MojoAnnotationsScanner.class.getName();
List<String> CLASS_LEVEL_ANNOTATIONS = Arrays.asList( Mojo.class.getName(), Execute.class.getName() ); final List<String> CLASS_LEVEL_ANNOTATIONS = Arrays.asList( Mojo.class.getName(), Execute.class.getName() );
List<String> FIELD_LEVEL_ANNOTATIONS = Arrays.asList( Parameter.class.getName(), Component.class.getName() ); final List<String> FIELD_LEVEL_ANNOTATIONS = Arrays.asList( Parameter.class.getName(), Component.class.getName() );
/** /**
* Scan classes for mojo annotations. * Scan classes for mojo annotations.

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner; package org.apache.maven.tools.plugin.annotations.scanner;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors; package org.apache.maven.tools.plugin.annotations.scanner.visitors;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -41,7 +41,7 @@ public class MojoAnnotationVisitor
MojoAnnotationVisitor( Logger logger, String annotationClassName ) MojoAnnotationVisitor( Logger logger, String annotationClassName )
{ {
super( Opcodes.ASM5 ); super( Opcodes.ASM4 );
this.logger = logger; this.logger = logger;
this.annotationClassName = annotationClassName; this.annotationClassName = annotationClassName;
} }

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors; package org.apache.maven.tools.plugin.annotations.scanner.visitors;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -19,8 +19,8 @@ package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors;
* under the License. * under the License.
*/ */
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotatedClass; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotatedClass;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.AnnotationVisitor;
@ -53,7 +53,7 @@ public class MojoClassVisitor
public MojoClassVisitor( Logger logger ) public MojoClassVisitor( Logger logger )
{ {
super( Opcodes.ASM5 ); super( Opcodes.ASM4 );
this.logger = logger; this.logger = logger;
} }

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors; package org.apache.maven.tools.plugin.annotations.scanner.visitors;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -19,7 +19,7 @@ package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors;
* under the License. * under the License.
*/ */
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute; import org.objectweb.asm.Attribute;
@ -44,7 +44,7 @@ public class MojoFieldVisitor
MojoFieldVisitor( Logger logger, String fieldName, String className ) MojoFieldVisitor( Logger logger, String fieldName, String className )
{ {
super( Opcodes.ASM5 ); super( Opcodes.ASM4 );
this.logger = logger; this.logger = logger;
this.fieldName = fieldName; this.fieldName = fieldName;
this.className = className; this.className = className;

View File

@ -28,8 +28,7 @@
Maven Plugin Tool for Annotations Maven Plugin Tool for Annotations
The Maven Plugin Tool for Annotations is the <<<java-annotations>>> implementation of The Maven Plugin Tool for Annotations is the implementation of {{{../maven-plugin-tools-api/index.html}maven-plugin-tools-api}}
{{{../maven-plugin-tools-api/index.html}maven-plugin-tools-api}}
to extract descriptors from plugins written in Java with to extract descriptors from plugins written in Java with
{{{../maven-plugin-annotations/index.html}Maven Plugin Tools Java 5 Annotations}}. {{{../maven-plugin-annotations/index.html}Maven Plugin Tools Java 5 Annotations}}.

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations; package org.apache.maven.tools.plugin.annotations;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one

View File

@ -1,4 +1,4 @@
package org.apache.maven.tools.plugin.extractor.annotations; package org.apache.maven.tools.plugin.annotations;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
@ -24,11 +24,11 @@ import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ComponentAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ComponentAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.datamodel.ParameterAnnotationContent; import org.apache.maven.tools.plugin.annotations.datamodel.ParameterAnnotationContent;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotatedClass; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotatedClass;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner;
import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScannerRequest; import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScannerRequest;
import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.PlexusTestCase;
import org.fest.assertions.Assertions; import org.fest.assertions.Assertions;
@ -50,7 +50,7 @@ public class TestAnnotationsReader
MojoAnnotationsScanner mojoAnnotationsScanner = (MojoAnnotationsScanner) lookup( MojoAnnotationsScanner.ROLE ); MojoAnnotationsScanner mojoAnnotationsScanner = (MojoAnnotationsScanner) lookup( MojoAnnotationsScanner.ROLE );
MojoAnnotationsScannerRequest request = new MojoAnnotationsScannerRequest(); MojoAnnotationsScannerRequest request = new MojoAnnotationsScannerRequest();
request.setClassesDirectories( Collections.singletonList( new File( getBasedir(), "target/test-classes" ) ) ); request.setClassesDirectories( Collections.singletonList( new File( "target/test-classes" ) ) );
request.setIncludePatterns( Arrays.asList( "**/FooMojo.class" ) ); request.setIncludePatterns( Arrays.asList( "**/FooMojo.class" ) );
request.setProject( new MavenProject() ); request.setProject( new MavenProject() );

View File

@ -1,48 +0,0 @@
package org.apache.maven.tools.plugin.extractor.annotations.scanner;
/*
* 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 static org.easymock.EasyMock.*;
import java.io.File;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.logging.Logger;
public class DefaultMojoAnnotationsScannerTest
extends PlexusTestCase
{
private DefaultMojoAnnotationsScanner scanner = new DefaultMojoAnnotationsScanner();
public void testSkipModuleInfoClassInArchive() throws Exception
{
scanner.scanArchive( new File( getBasedir(), "target/test-classes/java9-module.jar"), null, false );
}
public void testJava8Annotations() throws Exception
{
Logger logger = createMock( Logger.class );
expect( logger.isDebugEnabled() ).andReturn( false );
replay( logger );
scanner.enableLogging( logger );
scanner.scanArchive( new File( getBasedir(), "target/test-classes/java8-annotations.jar"), null, false );
}
}

View File

@ -24,8 +24,8 @@
<parent> <parent>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-script</artifactId> <artifactId>maven-plugin-tools</artifactId>
<version>3.5.1-SNAPSHOT</version> <version>3.3</version>
</parent> </parent>
<artifactId>maven-plugin-tools-ant</artifactId> <artifactId>maven-plugin-tools-ant</artifactId>
@ -57,6 +57,10 @@
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId> <artifactId>plexus-utils</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-annotations</artifactId> <artifactId>plexus-component-annotations</artifactId>

View File

@ -29,14 +29,14 @@ import java.util.Set;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.Parameter;
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.MavenProject;
import org.apache.maven.project.path.PathTranslator; import org.apache.maven.project.path.PathTranslator;
import org.apache.maven.tools.plugin.PluginToolsRequest; import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor; import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.ExtractionException; import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor; import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
import org.apache.maven.tools.plugin.extractor.model.PluginMetadataParseException;
import org.apache.maven.tools.plugin.extractor.model.PluginMetadataParser;
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.repository.ComponentRequirement; import org.codehaus.plexus.component.repository.ComponentRequirement;
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
@ -58,8 +58,7 @@ public class AntMojoDescriptorExtractor
private static final String SCRIPT_FILE_EXTENSION = ".build.xml"; private static final String SCRIPT_FILE_EXTENSION = ".build.xml";
/** {@inheritDoc} */ /** {@inheritDoc} */
protected List<MojoDescriptor> extractMojoDescriptorsFromMetadata( protected List<MojoDescriptor> extractMojoDescriptorsFromMetadata( Map<String, Set<File>> metadataFilesKeyedByBasedir,
Map<String, Set<File>> metadataFilesKeyedByBasedir,
PluginToolsRequest request ) PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException throws ExtractionException, InvalidPluginDescriptorException
{ {
@ -137,8 +136,7 @@ public class AntMojoDescriptorExtractor
param.setName( "project" ); param.setName( "project" );
param.setDefaultValue( "${project}" ); param.setDefaultValue( "${project}" );
param.setType( MavenProject.class.getName() ); param.setType( MavenProject.class.getName() );
param.setDescription( "The current MavenProject instance, which contains classpath " param.setDescription( "The current MavenProject instance, which contains classpath elements." );
+ "elements." );
param.setEditable( false ); param.setEditable( false );
param.setRequired( true ); param.setRequired( true );
@ -151,8 +149,7 @@ public class AntMojoDescriptorExtractor
param.setName( "session" ); param.setName( "session" );
param.setDefaultValue( "${session}" ); param.setDefaultValue( "${session}" );
param.setType( "org.apache.maven.execution.MavenSession" ); param.setType( "org.apache.maven.execution.MavenSession" );
param.setDescription( "The current MavenSession instance, which is used for " param.setDescription( "The current MavenSession instance, which is used for plugin-style expression resolution." );
+ "plugin-style expression resolution." );
param.setEditable( false ); param.setEditable( false );
param.setRequired( true ); param.setRequired( true );
@ -165,8 +162,7 @@ public class AntMojoDescriptorExtractor
param.setName( "mojoExecution" ); param.setName( "mojoExecution" );
param.setDefaultValue( "${mojoExecution}" ); param.setDefaultValue( "${mojoExecution}" );
param.setType( "org.apache.maven.plugin.MojoExecution" ); param.setType( "org.apache.maven.plugin.MojoExecution" );
param.setDescription( "The current Maven MojoExecution instance, which contains " param.setDescription( "The current Maven MojoExecution instance, which contains information about the mojo currently executing." );
+ "information about the mojo currently executing." );
param.setEditable( false ); param.setEditable( false );
param.setRequired( true ); param.setRequired( true );
@ -205,8 +201,7 @@ public class AntMojoDescriptorExtractor
else else
{ {
implementation = implementation =
relativePath relativePath + dImpl.substring( PluginMetadataParser.IMPL_BASE_PLACEHOLDER.length() );
+ dImpl.substring( PluginMetadataParser.IMPL_BASE_PLACEHOLDER.length() );
} }
} }

View File

@ -28,8 +28,7 @@
Maven Plugin Tool for Ant Maven Plugin Tool for Ant
The Maven Plugin Tool for Ant is the <<<ant>>> implementation of The Maven Plugin Tool for Ant is the implementation of {{{../maven-plugin-tools-api/index.html}maven-plugin-tools-api}} to
{{{../maven-plugin-tools-api/index.html}maven-plugin-tools-api}} to
extract descriptors for plugins written in Ant. extract descriptors for plugins written in Ant.
An Ant Maven Plugin has to be written in a file ending in <<<.build.xml>>> in <<<src/main/scripts>>>, An Ant Maven Plugin has to be written in a file ending in <<<.build.xml>>> in <<<src/main/scripts>>>,

View File

@ -19,16 +19,6 @@ package org.apache.maven.tools.plugin.extractor.ant;
* under the License. * under the License.
*/ */
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.Parameter;
@ -39,6 +29,18 @@ import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
import org.apache.maven.tools.plugin.PluginToolsRequest; import org.apache.maven.tools.plugin.PluginToolsRequest;
import org.apache.maven.tools.plugin.extractor.ExtractionException; import org.apache.maven.tools.plugin.extractor.ExtractionException;
import org.codehaus.plexus.component.repository.ComponentRequirement; import org.codehaus.plexus.component.repository.ComponentRequirement;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
public class AntMojoDescriptorExtractorTest public class AntMojoDescriptorExtractorTest
extends TestCase extends TestCase
@ -100,8 +102,6 @@ public class AntMojoDescriptorExtractorTest
} }
private Map buildTestMap( String resourceDirName ) private Map buildTestMap( String resourceDirName )
{
try
{ {
Map result = new HashMap(); Map result = new HashMap();
@ -113,8 +113,7 @@ public class AntMojoDescriptorExtractorTest
fail( "No classpath resource named: '" + resourceDirName + "/test.mojos.xml' could be found." ); fail( "No classpath resource named: '" + resourceDirName + "/test.mojos.xml' could be found." );
} }
// TODO As of JDK 7, replace with Paths.get( resource.toURI() ).toFile() File mojosXml = new File( StringUtils.replace( mojosXmlUrl.getPath(), "%20", " " ) );
File mojosXml = new File( mojosXmlUrl.toURI() );
File dir = mojosXml.getParentFile(); File dir = mojosXml.getParentFile();
Set scripts = new HashSet(); Set scripts = new HashSet();
@ -133,11 +132,6 @@ public class AntMojoDescriptorExtractorTest
return result; return result;
} }
catch ( final URISyntaxException e )
{
throw new AssertionError( e );
}
}
// TODO // TODO

View File

@ -25,13 +25,13 @@
<parent> <parent>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-tools</artifactId> <artifactId>maven-plugin-tools</artifactId>
<version>3.5.1-SNAPSHOT</version> <version>3.3</version>
</parent> </parent>
<artifactId>maven-plugin-tools-api</artifactId> <artifactId>maven-plugin-tools-api</artifactId>
<name>Maven Plugin Tools Extractor API</name> <name>Maven Plugin Tools APIs</name>
<description>The Maven Plugin Tools Extractor API provides an API to extract descriptor information from Maven Plugins.</description> <description>The Maven Plugin Tools API provides an API to extract descriptor information from Maven Plugins.</description>
<dependencies> <dependencies>
<!-- maven --> <!-- maven -->
@ -61,6 +61,10 @@
<groupId>org.codehaus.plexus</groupId> <groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId> <artifactId>plexus-utils</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<!-- test --> <!-- test -->
<dependency> <dependency>

View File

@ -21,6 +21,7 @@ package org.apache.maven.tools.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.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.ReaderFactory;
@ -32,8 +33,7 @@ import java.util.Set;
/** /**
* Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
* {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor} instances from different types of metadata * {@link MojoDescriptor} instances from different types of metadata for a given plugin.
* for a given plugin.
* *
* @author jdcasey * @author jdcasey
* @since 2.5 * @since 2.5

View File

@ -21,6 +21,7 @@ package org.apache.maven.tools.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.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProject;
@ -28,8 +29,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
* Request that encapsulates all information relevant to the process of extracting * Request that encapsulates all information relevant to the process of extracting {@link MojoDescriptor}
* {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor}
* instances from metadata for a certain type of mojo. * instances from metadata for a certain type of mojo.
* *
* @author jdcasey * @author jdcasey
@ -85,7 +85,7 @@ public interface PluginToolsRequest
PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound ); PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound );
/** /**
* @return <code>true</code> if no descriptor found should not cause a failure * @return
* @since 3.0 * @since 3.0
*/ */
boolean isSkipErrorNoDescriptorsFound(); boolean isSkipErrorNoDescriptorsFound();
@ -93,21 +93,21 @@ public interface PluginToolsRequest
/** /**
* Returns the list of {@link Artifact} used in class path scanning for annotations * Returns the list of {@link Artifact} used in class path scanning for annotations
* *
* @return the dependencies * @return
* @since 3.0 * @since 3.0
*/ */
Set<Artifact> getDependencies(); Set<Artifact> getDependencies();
/** /**
* @param dependencies * @param dependencies
* @return This request. * @return
* @since 3.0 * @since 3.0
*/ */
PluginToolsRequest setDependencies( Set<Artifact> dependencies ); PluginToolsRequest setDependencies( Set<Artifact> dependencies );
/** /**
* *
* @return the remote repositories * @return
* @since 3.0 * @since 3.0
*/ */
List<ArtifactRepository> getRemoteRepos(); List<ArtifactRepository> getRemoteRepos();
@ -115,14 +115,14 @@ public interface PluginToolsRequest
/** /**
* *
* @param remoteRepos * @param remoteRepos
* @return This request. * @return
* @since 3.0 * @since 3.0
*/ */
PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos ); PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos );
/** /**
* *
* @return the local artifact repository * @return
* @since 3.0 * @since 3.0
*/ */
ArtifactRepository getLocal(); ArtifactRepository getLocal();
@ -130,7 +130,7 @@ public interface PluginToolsRequest
/** /**
* *
* @param local * @param local
* @return This request. * @return
* @since 3.0 * @since 3.0
*/ */
PluginToolsRequest setLocal( ArtifactRepository local ); PluginToolsRequest setLocal( ArtifactRepository local );

View File

@ -83,8 +83,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @param outputDirectory not null * @param outputDirectory not null
* @throws ExtractionException if any * @throws ExtractionException if any
*/ */
protected void copyScriptsToOutputDirectory( Map<String, Set<File>> scriptFilesKeyedByBasedir, protected void copyScriptsToOutputDirectory( Map<String, Set<File>> scriptFilesKeyedByBasedir, String outputDirectory, PluginToolsRequest request )
String outputDirectory, PluginToolsRequest request )
throws ExtractionException throws ExtractionException
{ {
File outputDir = new File( outputDirectory ); File outputDir = new File( outputDirectory );
@ -135,8 +134,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @param scriptFileExtension not null * @param scriptFileExtension not null
* @return map with subdirs paths as key * @return map with subdirs paths as key
*/ */
protected Map<String, Set<File>> gatherFilesByBasedir( File basedir, List<String> directories, protected Map<String, Set<File>> gatherFilesByBasedir( File basedir, List<String> directories, String scriptFileExtension, PluginToolsRequest request )
String scriptFileExtension, PluginToolsRequest request )
{ {
Map<String, Set<File>> sourcesByBasedir = new TreeMap<String, Set<File>>(); Map<String, Set<File>> sourcesByBasedir = new TreeMap<String, Set<File>>();
@ -184,13 +182,13 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
/** /**
* Should be implemented in the sub classes. * Should be implemented in the sub classes.
* *
* @param metadataFilesByBasedir could be null * @param metadataFilesKeyedByBasedir could be null
* @param request The plugin request, never <code>null</code>. * @param request The plugin request, never <code>null</code>.
* @return always null * @return always null
* @throws ExtractionException if any * @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any * @throws InvalidPluginDescriptorException if any
*/ */
protected List<MojoDescriptor> extractMojoDescriptorsFromMetadata( Map<String, Set<File>> metadataFilesByBasedir, protected List<MojoDescriptor> extractMojoDescriptorsFromMetadata( Map<String, Set<File>> metadataFilesKeyedByBasedir,
PluginToolsRequest request ) PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException throws ExtractionException, InvalidPluginDescriptorException
{ {
@ -216,8 +214,7 @@ public abstract class AbstractScriptedMojoDescriptorExtractor
* @throws ExtractionException if any * @throws ExtractionException if any
* @throws InvalidPluginDescriptorException if any * @throws InvalidPluginDescriptorException if any
*/ */
protected List<MojoDescriptor> extractMojoDescriptors( Map<String, Set<File>> scriptFilesKeyedByBasedir, protected List<MojoDescriptor> extractMojoDescriptors( Map<String, Set<File>> scriptFilesKeyedByBasedir, PluginToolsRequest request )
PluginToolsRequest request )
throws ExtractionException, InvalidPluginDescriptorException throws ExtractionException, InvalidPluginDescriptorException
{ {
return null; return null;

Some files were not shown because too many files have changed in this diff Show More