[MPLUGIN-189] scan sources from dependencies if sources classifier found to get @since,@deprecated and text
git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/branches/MPLUGIN-189@1336291 13f79535-47bb-0310-9956-ffa450edef68master
parent
ccc68be0c6
commit
d85b22ec88
|
|
@ -106,6 +106,11 @@
|
||||||
<artifactId>plexus-utils</artifactId>
|
<artifactId>plexus-utils</artifactId>
|
||||||
<version>2.0.5</version>
|
<version>2.0.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-archiver</artifactId>
|
||||||
|
<version>2.1.1</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
invoker.goals.1 = install
|
||||||
|
invoker.goals.2 = org.apache.maven.its.annotation-with-inheritance-from-deps:annotation-with-inheritance-from-deps:1.0:first
|
||||||
|
#FIXME disabled need to find a solution for the chicken and eggs issue.
|
||||||
|
#help sources are generated @generated-sources but need descriptor which need compile phase first for classes scanning
|
||||||
|
#invoker.goals.3 = org.apache.maven.its.basic-java-annotations:maven-it-basic-java-annotations:1.0::help
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
<?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>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.apache.maven.its.annotation-with-inheritance-from-deps</groupId>
|
||||||
|
<artifactId>annotation-with-inheritance-from-deps</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>maven-plugin</packaging>
|
||||||
|
|
||||||
|
<name>Maven Integration Test :: annotation-with-inheritance-from-deps</name>
|
||||||
|
<description>
|
||||||
|
Test plugin-plugin, which tests maven-plugin-tools-api and
|
||||||
|
maven-plugin-tools-java. This will generate a plugin descriptor from
|
||||||
|
java-based mojo sources, install the plugin, and then use it.
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<plexusCompilerVersion>1.8.6</plexusCompilerVersion>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-plugin-api</artifactId>
|
||||||
|
<version>2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-project</artifactId>
|
||||||
|
<version>@mavenVersion@</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.plugin-tools</groupId>
|
||||||
|
<artifactId>maven-plugin-annotations</artifactId>
|
||||||
|
<version>@project.version@</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.plugin-tools</groupId>
|
||||||
|
<artifactId>maven-plugin-tools-annotations</artifactId>
|
||||||
|
<version>@project.version@</version>
|
||||||
|
<classifier>tests</classifier>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-compiler-manager</artifactId>
|
||||||
|
<version>${plexusCompilerVersion}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-compiler-javac</artifactId>
|
||||||
|
<version>${plexusCompilerVersion}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-plugin-plugin</artifactId>
|
||||||
|
<version>@project.version@</version>
|
||||||
|
<configuration>
|
||||||
|
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>mojo-descriptor</id>
|
||||||
|
<phase>process-classes</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>descriptor</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
package org.apache.maven.plugin.coreit;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.MojoExecutionException;
|
||||||
|
import org.apache.maven.plugins.annotations.Component;
|
||||||
|
import org.apache.maven.plugins.annotations.Execute;
|
||||||
|
import org.apache.maven.plugins.annotations.LifecyclePhase;
|
||||||
|
import org.apache.maven.plugins.annotations.Mojo;
|
||||||
|
import org.apache.maven.plugins.annotations.Parameter;
|
||||||
|
import org.apache.maven.tools.plugin.annotations.FooMojo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Touches a test file.
|
||||||
|
*
|
||||||
|
* @since 1.2
|
||||||
|
* @deprecated Don't use!
|
||||||
|
*/
|
||||||
|
@Mojo( name = "first", requiresDependencyResolution = "test", defaultPhase = LifecyclePhase.INTEGRATION_TEST )
|
||||||
|
public class FirstMojo
|
||||||
|
extends FooMojo
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 0.1
|
||||||
|
* @deprecated As of 0.2
|
||||||
|
*/
|
||||||
|
@Parameter( alias = "alias" )
|
||||||
|
private String aliasedParam;
|
||||||
|
|
||||||
|
@Component( role = "org.apache.maven.project.MavenProjectHelper", roleHint = "default" )
|
||||||
|
private Object projectHelper;
|
||||||
|
|
||||||
|
public void execute()
|
||||||
|
throws MojoExecutionException
|
||||||
|
{
|
||||||
|
if (bar == null)
|
||||||
|
{
|
||||||
|
throw new MojoExecutionException( "bar == null" );
|
||||||
|
}
|
||||||
|
if (beer == null)
|
||||||
|
{
|
||||||
|
throw new MojoExecutionException( "beer == null" );
|
||||||
|
}
|
||||||
|
if ( projectHelper == null )
|
||||||
|
{
|
||||||
|
throw new MojoExecutionException( "projectHelper == null" );
|
||||||
|
}
|
||||||
|
if ( compilerManager == null )
|
||||||
|
{
|
||||||
|
throw new MojoExecutionException( "compilerManager == null" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
<lifecycles>
|
||||||
|
<lifecycle>
|
||||||
|
<id>my-lifecycle</id>
|
||||||
|
<phases>
|
||||||
|
<phase>
|
||||||
|
<id>process-classes</id>
|
||||||
|
</phase>
|
||||||
|
<phase>
|
||||||
|
<id>test</id>
|
||||||
|
<configuration>
|
||||||
|
<classesDirectory>${project.build.directory}/generated-classes/cobertura</classesDirectory>
|
||||||
|
<testFailureIgnore>true</testFailureIgnore>
|
||||||
|
</configuration>
|
||||||
|
</phase>
|
||||||
|
</phases>
|
||||||
|
</lifecycle>
|
||||||
|
</lifecycles>
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
|
||||||
|
File descriptorFile = new File( basedir, "target/classes/META-INF/maven/plugin.xml" );
|
||||||
|
assert descriptorFile.isFile()
|
||||||
|
|
||||||
|
def pluginDescriptor = new XmlParser().parse( descriptorFile );
|
||||||
|
|
||||||
|
def mojo = pluginDescriptor.mojos.mojo.findAll{ it.goal.text() == "first"}[0]
|
||||||
|
|
||||||
|
assert mojo.goal.text() == 'first'
|
||||||
|
assert mojo.implementation.text() == 'org.apache.maven.plugin.coreit.FirstMojo'
|
||||||
|
assert mojo.language.text() == 'java'
|
||||||
|
assert mojo.description.text() == 'Touches a test file.'
|
||||||
|
assert mojo.deprecated.text() == "Don't use!"
|
||||||
|
assert mojo.requiresDependencyResolution.text() == 'test'
|
||||||
|
assert mojo.requiresDependencyCollection.text() == ''
|
||||||
|
assert mojo.requiresProject.text() == 'true'
|
||||||
|
assert mojo.requiresOnline.text() == 'false'
|
||||||
|
assert mojo.requiresDirectInvocation.text() == 'false'
|
||||||
|
assert mojo.aggregator.text() == 'false'
|
||||||
|
assert mojo.threadSafe.text() == 'false'
|
||||||
|
assert mojo.phase.text() == 'integration-test'
|
||||||
|
assert mojo.executePhase.text() == 'package'
|
||||||
|
assert mojo.executeLifecycle.text() == 'my-lifecycle'
|
||||||
|
|
||||||
|
assert mojo.configuration.bar[0].text() == '${thebar}'
|
||||||
|
assert mojo.configuration.bar[0].'@implementation' == 'java.lang.String'
|
||||||
|
assert mojo.configuration.bar[0].'@default-value' == 'coolbar'
|
||||||
|
|
||||||
|
assert mojo.configuration.beer[0].text() == '${thebeer}'
|
||||||
|
assert mojo.configuration.beer[0].'@implementation' == 'java.lang.String'
|
||||||
|
assert mojo.configuration.beer[0].'@default-value' == 'coolbeer'
|
||||||
|
|
||||||
|
assert mojo.requirements.requirement.size() == 3
|
||||||
|
|
||||||
|
assert mojo.requirements.requirement[1].role.text() == 'org.codehaus.plexus.compiler.manager.CompilerManager'
|
||||||
|
assert mojo.requirements.requirement[1].'role-hint'.text() == ''
|
||||||
|
assert mojo.requirements.requirement[1].'field-name'.text() == 'compilerManager'
|
||||||
|
|
||||||
|
assert mojo.requirements.requirement[2].role.text() == 'org.apache.maven.project.MavenProjectHelper'
|
||||||
|
assert mojo.requirements.requirement[2].'role-hint'.text() == 'default'
|
||||||
|
assert mojo.requirements.requirement[2].'field-name'.text() == 'projectHelper'
|
||||||
|
|
||||||
|
assert mojo.parameters.parameter.size() == 3
|
||||||
|
|
||||||
|
def parameter = mojo.parameters.parameter.findAll{ it.name.text() == "aliasedParam"}[0]
|
||||||
|
|
||||||
|
assert parameter.name.text() == 'aliasedParam'
|
||||||
|
assert parameter.alias.text() == 'alias'
|
||||||
|
assert parameter.type.text() == 'java.lang.String'
|
||||||
|
assert parameter.deprecated.text() == 'As of 0.2'
|
||||||
|
assert parameter.required.text() == 'false'
|
||||||
|
assert parameter.editable.text() == 'true'
|
||||||
|
assert parameter.description.text() == ''
|
||||||
|
|
||||||
|
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "beer"}[0]
|
||||||
|
|
||||||
|
assert parameter.name.text() == 'beer'
|
||||||
|
assert parameter.alias.isEmpty()
|
||||||
|
assert parameter.type.text() == 'java.lang.String'
|
||||||
|
assert parameter.deprecated.text() == "wine is better"
|
||||||
|
assert parameter.required.text() == 'false'
|
||||||
|
assert parameter.editable.text() == 'true'
|
||||||
|
assert parameter.description.text() == 'beer for non french folks'
|
||||||
|
|
||||||
|
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "bar"}[0]
|
||||||
|
|
||||||
|
assert parameter.name.text() == 'bar'
|
||||||
|
assert parameter.alias.isEmpty()
|
||||||
|
assert parameter.type.text() == 'java.lang.String'
|
||||||
|
assert parameter.deprecated.isEmpty()
|
||||||
|
assert parameter.required.text() == 'true'
|
||||||
|
assert parameter.editable.text() == 'true'
|
||||||
|
assert parameter.description.text() == 'the cool bar to go'
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
@ -20,6 +20,7 @@ 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.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;
|
||||||
|
|
@ -35,6 +36,7 @@ import org.codehaus.plexus.util.ReaderFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -42,7 +44,6 @@ import java.util.Set;
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
|
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*
|
|
||||||
* @threadSafe
|
* @threadSafe
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractGeneratorMojo
|
public abstract class AbstractGeneratorMojo
|
||||||
|
|
@ -84,6 +85,7 @@ public abstract class AbstractGeneratorMojo
|
||||||
* By default an exception is throw if no mojo descriptor is found. As the maven-plugin is defined in core, the
|
* By default an exception is throw if no mojo descriptor is found. As the maven-plugin is defined in core, the
|
||||||
* descriptor generator mojo is bound to generate-resources phase.
|
* descriptor generator mojo is bound to generate-resources phase.
|
||||||
* But for annotations, the compiled classes are needed, so skip error
|
* But for annotations, the compiled classes are needed, so skip error
|
||||||
|
*
|
||||||
* @parameter expression="${maven.plugin.skipErrorNoDescriptorsFound}" default-value="false"
|
* @parameter expression="${maven.plugin.skipErrorNoDescriptorsFound}" default-value="false"
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
*/
|
*/
|
||||||
|
|
@ -134,6 +136,26 @@ public abstract class AbstractGeneratorMojo
|
||||||
*/
|
*/
|
||||||
protected Set<Artifact> dependencies;
|
protected Set<Artifact> dependencies;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of Remote Repositories used by the resolver
|
||||||
|
*
|
||||||
|
* @parameter expression="${project.remoteArtifactRepositories}"
|
||||||
|
* @readonly
|
||||||
|
* @required
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
protected List<ArtifactRepository> remoteRepos;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Location of the local repository.
|
||||||
|
*
|
||||||
|
* @parameter expression="${localRepository}"
|
||||||
|
* @readonly
|
||||||
|
* @required
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
protected ArtifactRepository local;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the output directory where files will be generated.
|
* @return the output directory where files will be generated.
|
||||||
*/
|
*/
|
||||||
|
|
@ -144,7 +166,9 @@ public abstract class AbstractGeneratorMojo
|
||||||
*/
|
*/
|
||||||
protected abstract Generator createGenerator();
|
protected abstract Generator createGenerator();
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
public void execute()
|
public void execute()
|
||||||
throws MojoExecutionException
|
throws MojoExecutionException
|
||||||
{
|
{
|
||||||
|
|
@ -159,8 +183,8 @@ public abstract class AbstractGeneratorMojo
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( project.getArtifactId().toLowerCase().startsWith( "maven-" )
|
if ( project.getArtifactId().toLowerCase().startsWith( "maven-" )
|
||||||
&& project.getArtifactId().toLowerCase().endsWith( "-plugin" )
|
&& project.getArtifactId().toLowerCase().endsWith( "-plugin" ) && !"org.apache.maven.plugins".equals(
|
||||||
&& !"org.apache.maven.plugins".equals( project.getGroupId() ) )
|
project.getGroupId() ) )
|
||||||
{
|
{
|
||||||
getLog().error( "\n\nArtifact Ids of the format maven-___-plugin are reserved for \n"
|
getLog().error( "\n\nArtifact Ids of the format maven-___-plugin are reserved for \n"
|
||||||
+ "plugins in the Group Id org.apache.maven.plugins\n"
|
+ "plugins in the Group Id org.apache.maven.plugins\n"
|
||||||
|
|
@ -176,8 +200,8 @@ public abstract class AbstractGeneratorMojo
|
||||||
else if ( !goalPrefix.equals( defaultGoalPrefix ) )
|
else if ( !goalPrefix.equals( defaultGoalPrefix ) )
|
||||||
{
|
{
|
||||||
getLog().warn(
|
getLog().warn(
|
||||||
"\n\nGoal prefix is specified as: '" + goalPrefix + "'. "
|
"\n\nGoal prefix is specified as: '" + goalPrefix + "'. " + "Maven currently expects it to be '"
|
||||||
+ "Maven currently expects it to be '" + defaultGoalPrefix + "'.\n" );
|
+ defaultGoalPrefix + "'.\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
mojoScanner.setActiveExtractors( extractors );
|
mojoScanner.setActiveExtractors( extractors );
|
||||||
|
|
@ -200,7 +224,7 @@ 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 metadata, i.e. build is platform dependent!" );
|
+ " actually) to read mojo metadata, i.e. build is platform dependent!" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -215,6 +239,8 @@ public abstract class AbstractGeneratorMojo
|
||||||
request.setEncoding( encoding );
|
request.setEncoding( encoding );
|
||||||
request.setSkipErrorNoDescriptorsFound( skipErrorNoDescriptorsFound );
|
request.setSkipErrorNoDescriptorsFound( skipErrorNoDescriptorsFound );
|
||||||
request.setDependencies( dependencies );
|
request.setDependencies( dependencies );
|
||||||
|
request.setLocal( this.local );
|
||||||
|
request.setRemoteRepos( this.remoteRepos );
|
||||||
|
|
||||||
mojoScanner.populatePluginDescriptor( request );
|
mojoScanner.populatePluginDescriptor( request );
|
||||||
|
|
||||||
|
|
@ -239,7 +265,8 @@ public abstract class AbstractGeneratorMojo
|
||||||
catch ( LinkageError e )
|
catch ( LinkageError e )
|
||||||
{
|
{
|
||||||
throw new MojoExecutionException( "The API of the mojo scanner is not compatible with this plugin version."
|
throw new MojoExecutionException( "The API of the mojo scanner is not compatible with this plugin version."
|
||||||
+ " Please check the plugin dependencies configured in the POM and ensure the versions match.", e );
|
+ " Please check the plugin dependencies configured in the POM and ensure the versions match.",
|
||||||
|
e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,11 @@
|
||||||
<version>3.3.1</version>
|
<version>3.3.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-archiver</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.thoughtworks.qdox</groupId>
|
<groupId>com.thoughtworks.qdox</groupId>
|
||||||
<artifactId>qdox</artifactId>
|
<artifactId>qdox</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,10 @@ import com.thoughtworks.qdox.model.DocletTag;
|
||||||
import com.thoughtworks.qdox.model.JavaClass;
|
import com.thoughtworks.qdox.model.JavaClass;
|
||||||
import com.thoughtworks.qdox.model.JavaField;
|
import com.thoughtworks.qdox.model.JavaField;
|
||||||
import org.apache.maven.artifact.Artifact;
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.factory.ArtifactFactory;
|
||||||
|
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
|
||||||
|
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
|
||||||
|
import org.apache.maven.artifact.resolver.ArtifactResolver;
|
||||||
import org.apache.maven.plugin.descriptor.DuplicateParameterException;
|
import org.apache.maven.plugin.descriptor.DuplicateParameterException;
|
||||||
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;
|
||||||
|
|
@ -41,6 +45,9 @@ import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner;
|
||||||
import org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScannerRequest;
|
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.codehaus.plexus.archiver.UnArchiver;
|
||||||
|
import org.codehaus.plexus.archiver.manager.ArchiverManager;
|
||||||
|
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
|
||||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||||
import org.codehaus.plexus.util.StringUtils;
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
|
||||||
|
|
@ -50,8 +57,10 @@ import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
|
@ -69,6 +78,21 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
*/
|
*/
|
||||||
private MojoAnnotationsScanner mojoAnnotationsScanner;
|
private MojoAnnotationsScanner mojoAnnotationsScanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requirement
|
||||||
|
*/
|
||||||
|
private ArtifactResolver artifactResolver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requirement
|
||||||
|
*/
|
||||||
|
private ArtifactFactory artifactFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requirement
|
||||||
|
*/
|
||||||
|
private ArchiverManager archiverManager;
|
||||||
|
|
||||||
public List<MojoDescriptor> execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
public List<MojoDescriptor> execute( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
throws ExtractionException, InvalidPluginDescriptorException
|
throws ExtractionException, InvalidPluginDescriptorException
|
||||||
{
|
{
|
||||||
|
|
@ -95,6 +119,9 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
// we currently only scan sources from reactors
|
// we currently only scan sources from reactors
|
||||||
List<MavenProject> mavenProjects = new ArrayList<MavenProject>();
|
List<MavenProject> mavenProjects = new ArrayList<MavenProject>();
|
||||||
|
|
||||||
|
// if we need to scan sources from external artifacts
|
||||||
|
Set<Artifact> externalArtifacts = new HashSet<Artifact>();
|
||||||
|
|
||||||
for ( MojoAnnotatedClass mojoAnnotatedClass : mojoAnnotatedClasses.values() )
|
for ( MojoAnnotatedClass mojoAnnotatedClass : mojoAnnotatedClasses.values() )
|
||||||
{
|
{
|
||||||
if ( !StringUtils.equals( mojoAnnotatedClass.getArtifact().getArtifactId(),
|
if ( !StringUtils.equals( mojoAnnotatedClass.getArtifact().getArtifactId(),
|
||||||
|
|
@ -106,11 +133,31 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
{
|
{
|
||||||
mavenProjects.add( mavenProject );
|
mavenProjects.add( mavenProject );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
externalArtifacts.add( mojoAnnotatedClass.getArtifact() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, JavaClass> javaClassesMap = new HashMap<String, JavaClass>();
|
Map<String, JavaClass> javaClassesMap = new HashMap<String, JavaClass>();
|
||||||
|
|
||||||
|
// try to get artifact with classifier sources
|
||||||
|
// extract somewhere then scan doclet for @since, @deprecated
|
||||||
|
for ( Artifact artifact : externalArtifacts )
|
||||||
|
{
|
||||||
|
// parameter for test-sources too ?? olamy I need that for it test only
|
||||||
|
if ( StringUtils.equalsIgnoreCase( "tests", artifact.getClassifier() ) )
|
||||||
|
{
|
||||||
|
javaClassesMap.putAll( discoverClassesFromSourcesJar( artifact, request, "test-sources" ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
javaClassesMap.putAll( discoverClassesFromSourcesJar( artifact, request, "sources" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
for ( MavenProject mavenProject : mavenProjects )
|
for ( MavenProject mavenProject : mavenProjects )
|
||||||
{
|
{
|
||||||
javaClassesMap.putAll( discoverClasses( request.getEncoding(), mavenProject ) );
|
javaClassesMap.putAll( discoverClasses( request.getEncoding(), mavenProject ) );
|
||||||
|
|
@ -120,10 +167,59 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
|
|
||||||
populateDataFromJavadoc( mojoAnnotatedClasses, javaClassesMap );
|
populateDataFromJavadoc( mojoAnnotatedClasses, javaClassesMap );
|
||||||
|
|
||||||
return toMojoDescriptors( mojoAnnotatedClasses, request );
|
return toMojoDescriptors( mojoAnnotatedClasses, request, javaClassesMap );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected Map<String, JavaClass> discoverClassesFromSourcesJar( Artifact artifact, PluginToolsRequest request,
|
||||||
|
String classifier )
|
||||||
|
throws ExtractionException
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Artifact sourcesArtifact =
|
||||||
|
artifactFactory.createArtifactWithClassifier( artifact.getGroupId(), artifact.getArtifactId(),
|
||||||
|
artifact.getVersion(), artifact.getType(), classifier );
|
||||||
|
|
||||||
|
artifactResolver.resolve( sourcesArtifact, request.getRemoteRepos(), request.getLocal() );
|
||||||
|
if ( sourcesArtifact.getFile() != null && sourcesArtifact.getFile().exists() )
|
||||||
|
{
|
||||||
|
File extractDirectory = new File( request.getProject().getBuild().getDirectory(),
|
||||||
|
"maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/"
|
||||||
|
+ sourcesArtifact.getArtifactId() + "/"
|
||||||
|
+ sourcesArtifact.getVersion() + "/"
|
||||||
|
+ sourcesArtifact.getClassifier() );
|
||||||
|
if ( !extractDirectory.exists() )
|
||||||
|
{
|
||||||
|
extractDirectory.mkdirs();
|
||||||
|
}
|
||||||
|
// extract sources in a directory
|
||||||
|
//target/maven-plugin-plugin/${groupId}/${artifact}/sources
|
||||||
|
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );
|
||||||
|
unArchiver.setSourceFile( sourcesArtifact.getFile() );
|
||||||
|
unArchiver.setDestDirectory( extractDirectory );
|
||||||
|
unArchiver.extract();
|
||||||
|
|
||||||
|
return discoverClasses( request.getEncoding(), Arrays.asList( extractDirectory ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch ( ArtifactResolutionException e )
|
||||||
|
{
|
||||||
|
throw new ExtractionException( e.getMessage(), e );
|
||||||
|
}
|
||||||
|
catch ( ArtifactNotFoundException e )
|
||||||
|
{
|
||||||
|
//throw new ExtractionException( e.getMessage(), e );
|
||||||
|
getLogger().debug( "skip ArtifactNotFoundException:" + e.getMessage() );
|
||||||
|
}
|
||||||
|
catch ( NoSuchArchiverException e )
|
||||||
|
{
|
||||||
|
throw new ExtractionException( e.getMessage(), e );
|
||||||
|
}
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* from sources scan to get @since and @deprecated and description of classes and fields.
|
* from sources scan to get @since and @deprecated and description of classes and fields.
|
||||||
*
|
*
|
||||||
|
|
@ -155,8 +251,13 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
mojoAnnotationContent.setDeprecated( deprecated.getValue() );
|
mojoAnnotationContent.setDeprecated( deprecated.getValue() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Map<String, JavaField> fieldsMap = extractFieldParameterTags( javaClass );
|
Map<String, JavaField> fieldsMap =
|
||||||
for ( Map.Entry<String, ParameterAnnotationContent> parameter : entry.getValue().getParameters().entrySet() )
|
extractFieldParameterTags( javaClass, javaClassesMap, mojoAnnotatedClasses );
|
||||||
|
Map<String, ParameterAnnotationContent> parameters =
|
||||||
|
getParametersParentHierarchy( entry.getValue(), new HashMap<String, ParameterAnnotationContent>(),
|
||||||
|
mojoAnnotatedClasses );
|
||||||
|
for ( Map.Entry<String, ParameterAnnotationContent> parameter : new TreeMap<String, ParameterAnnotationContent>(
|
||||||
|
parameters ).entrySet() )
|
||||||
{
|
{
|
||||||
JavaField javaField = fieldsMap.get( parameter.getKey() );
|
JavaField javaField = fieldsMap.get( parameter.getKey() );
|
||||||
if ( javaField != null )
|
if ( javaField != null )
|
||||||
|
|
@ -206,7 +307,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
* @param tagName not null
|
* @param tagName not null
|
||||||
* @return docletTag instance
|
* @return docletTag instance
|
||||||
*/
|
*/
|
||||||
private static DocletTag findInClassHierarchy( JavaClass javaClass, String tagName )
|
private DocletTag findInClassHierarchy( JavaClass javaClass, String tagName )
|
||||||
{
|
{
|
||||||
DocletTag tag = javaClass.getTagByName( tagName );
|
DocletTag tag = javaClass.getTagByName( tagName );
|
||||||
|
|
||||||
|
|
@ -229,9 +330,11 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
* @param javaClass not null
|
* @param javaClass not null
|
||||||
* @return map with Mojo parameters names as keys
|
* @return map with Mojo parameters names as keys
|
||||||
*/
|
*/
|
||||||
private Map<String, JavaField> extractFieldParameterTags( JavaClass javaClass )
|
private Map<String, JavaField> extractFieldParameterTags( JavaClass javaClass,
|
||||||
|
Map<String, JavaClass> javaClassesMap,
|
||||||
|
Map<String, MojoAnnotatedClass> mojoAnnotatedClasses )
|
||||||
{
|
{
|
||||||
Map<String, JavaField> rawParams;
|
Map<String, JavaField> rawParams = new TreeMap<String, com.thoughtworks.qdox.model.JavaField>();
|
||||||
|
|
||||||
// we have to add the parent fields first, so that they will be overwritten by the local fields if
|
// we have to add the parent fields first, so that they will be overwritten by the local fields if
|
||||||
// that actually happens...
|
// that actually happens...
|
||||||
|
|
@ -239,10 +342,20 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
|
|
||||||
if ( superClass != null )
|
if ( superClass != null )
|
||||||
{
|
{
|
||||||
rawParams = extractFieldParameterTags( superClass );
|
if ( superClass.getFields().length > 0 )
|
||||||
|
{
|
||||||
|
rawParams = extractFieldParameterTags( superClass, javaClassesMap, mojoAnnotatedClasses );
|
||||||
|
}
|
||||||
|
// maybe sources comes from scan of sources artifact
|
||||||
|
superClass = javaClassesMap.get( superClass.getFullyQualifiedName() );
|
||||||
|
if ( superClass != null )
|
||||||
|
{
|
||||||
|
rawParams = extractFieldParameterTags( superClass, javaClassesMap, mojoAnnotatedClasses );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
rawParams = new TreeMap<String, JavaField>();
|
rawParams = new TreeMap<String, JavaField>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -265,12 +378,11 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
|
|
||||||
protected Map<String, JavaClass> discoverClasses( final String encoding, final MavenProject project )
|
protected Map<String, JavaClass> discoverClasses( final String encoding, final MavenProject project )
|
||||||
{
|
{
|
||||||
JavaDocBuilder builder = new JavaDocBuilder();
|
List<File> sources = new ArrayList<File>();
|
||||||
builder.setEncoding( encoding );
|
|
||||||
|
|
||||||
for ( String source : (List<String>) project.getCompileSourceRoots() )
|
for ( String source : (List<String>) project.getCompileSourceRoots() )
|
||||||
{
|
{
|
||||||
builder.addSourceTree( new File( source ) );
|
sources.add( new File( source ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO be more dynamic
|
// TODO be more dynamic
|
||||||
|
|
@ -278,7 +390,20 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
if ( !project.getCompileSourceRoots().contains( generatedPlugin.getAbsolutePath() )
|
if ( !project.getCompileSourceRoots().contains( generatedPlugin.getAbsolutePath() )
|
||||||
&& generatedPlugin.exists() )
|
&& generatedPlugin.exists() )
|
||||||
{
|
{
|
||||||
builder.addSourceTree( generatedPlugin );
|
sources.add( generatedPlugin );
|
||||||
|
}
|
||||||
|
|
||||||
|
return discoverClasses( encoding, sources );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Map<String, JavaClass> discoverClasses( final String encoding, List<File> sourceDirectories )
|
||||||
|
{
|
||||||
|
JavaDocBuilder builder = new JavaDocBuilder();
|
||||||
|
builder.setEncoding( encoding );
|
||||||
|
|
||||||
|
for ( File source : sourceDirectories )
|
||||||
|
{
|
||||||
|
builder.addSourceTree( source );
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaClass[] javaClasses = builder.getClasses();
|
JavaClass[] javaClasses = builder.getClasses();
|
||||||
|
|
@ -298,9 +423,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
return javaClassMap;
|
return javaClassMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<MojoDescriptor> toMojoDescriptors( Map<String, MojoAnnotatedClass> mojoAnnotatedClasses,
|
private List<MojoDescriptor> toMojoDescriptors( Map<String, MojoAnnotatedClass> mojoAnnotatedClasses,
|
||||||
PluginToolsRequest request )
|
PluginToolsRequest request, Map<String, JavaClass> javaClassesMap )
|
||||||
throws DuplicateParameterException
|
throws DuplicateParameterException
|
||||||
{
|
{
|
||||||
List<MojoDescriptor> mojoDescriptors = new ArrayList<MojoDescriptor>( mojoAnnotatedClasses.size() );
|
List<MojoDescriptor> mojoDescriptors = new ArrayList<MojoDescriptor>( mojoAnnotatedClasses.size() );
|
||||||
|
|
@ -367,6 +491,7 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
parameter.setEditable( !parameterAnnotationContent.readonly() );
|
parameter.setEditable( !parameterAnnotationContent.readonly() );
|
||||||
parameter.setExpression( parameterAnnotationContent.expression() );
|
parameter.setExpression( parameterAnnotationContent.expression() );
|
||||||
parameter.setType( parameterAnnotationContent.getClassName() );
|
parameter.setType( parameterAnnotationContent.getClassName() );
|
||||||
|
parameter.setSince( parameterAnnotationContent.getSince() );
|
||||||
parameter.setRequired( parameterAnnotationContent.required() );
|
parameter.setRequired( parameterAnnotationContent.required() );
|
||||||
|
|
||||||
mojoDescriptor.addParameter( parameter );
|
mojoDescriptor.addParameter( parameter );
|
||||||
|
|
@ -385,7 +510,8 @@ public class JavaAnnotationsMojoDescriptorExtractor
|
||||||
parameter.setRequirement(
|
parameter.setRequirement(
|
||||||
new Requirement( componentAnnotationContent.role(), componentAnnotationContent.roleHint() ) );
|
new Requirement( componentAnnotationContent.role(), componentAnnotationContent.roleHint() ) );
|
||||||
parameter.setEditable( false );
|
parameter.setEditable( false );
|
||||||
|
parameter.setDeprecated( componentAnnotationContent.getDeprecated() );
|
||||||
|
parameter.setSince( componentAnnotationContent.getSince() );
|
||||||
mojoDescriptor.addParameter( parameter );
|
mojoDescriptor.addParameter( parameter );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,18 @@
|
||||||
<role>org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner</role>
|
<role>org.apache.maven.tools.plugin.annotations.scanner.MojoAnnotationsScanner</role>
|
||||||
<role-hint>default</role-hint>
|
<role-hint>default</role-hint>
|
||||||
</requirement>
|
</requirement>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
|
||||||
|
<role-hint>default</role-hint>
|
||||||
|
</requirement>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.artifact.factory.ArtifactFactory</role>
|
||||||
|
<role-hint>default</role-hint>
|
||||||
|
</requirement>
|
||||||
|
<requirement>
|
||||||
|
<role>org.codehaus.plexus.archiver.manager.ArchiverManager</role>
|
||||||
|
<role-hint>default</role-hint>
|
||||||
|
</requirement>
|
||||||
</requirements>
|
</requirements>
|
||||||
</component>
|
</component>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ public class FooMojo
|
||||||
/**
|
/**
|
||||||
* the cool bar to go
|
* the cool bar to go
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
@Parameter( expression = "${thebar}", required = true, defaultValue = "coolbar" )
|
@Parameter( expression = "${thebar}", required = true, defaultValue = "coolbar" )
|
||||||
protected String bar;
|
protected String bar;
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,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.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.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
|
|
@ -27,6 +28,7 @@ import org.codehaus.plexus.util.ReaderFactory;
|
||||||
import org.codehaus.plexus.util.StringUtils;
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -52,6 +54,10 @@ public class DefaultPluginToolsRequest
|
||||||
|
|
||||||
private Set<Artifact> dependencies;
|
private Set<Artifact> dependencies;
|
||||||
|
|
||||||
|
private List<ArtifactRepository> remoteRepos;
|
||||||
|
|
||||||
|
private ArtifactRepository local;
|
||||||
|
|
||||||
public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
|
public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
|
||||||
{
|
{
|
||||||
this.project = project;
|
this.project = project;
|
||||||
|
|
@ -148,4 +154,26 @@ public class DefaultPluginToolsRequest
|
||||||
this.dependencies = dependencies;
|
this.dependencies = dependencies;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ArtifactRepository> getRemoteRepos()
|
||||||
|
{
|
||||||
|
return remoteRepos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos )
|
||||||
|
{
|
||||||
|
this.remoteRepos = remoteRepos;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArtifactRepository getLocal()
|
||||||
|
{
|
||||||
|
return local;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PluginToolsRequest setLocal( ArtifactRepository local )
|
||||||
|
{
|
||||||
|
this.local = local;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,12 @@ 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.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.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -90,16 +92,47 @@ 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
|
* @return
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
*/
|
*/
|
||||||
Set<Artifact> getDependencies();
|
Set<Artifact> getDependencies();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param dependencies
|
* @param dependencies
|
||||||
* @return
|
* @return
|
||||||
|
* @since 3.0
|
||||||
*/
|
*/
|
||||||
PluginToolsRequest setDependencies( Set<Artifact> dependencies );
|
PluginToolsRequest setDependencies( Set<Artifact> dependencies );
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
List<ArtifactRepository> getRemoteRepos();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param remoteRepos
|
||||||
|
* @return
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos );
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
ArtifactRepository getLocal();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param local
|
||||||
|
* @return
|
||||||
|
* @since 3.0
|
||||||
|
*/
|
||||||
|
PluginToolsRequest setLocal( ArtifactRepository local );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
pom.xml
5
pom.xml
|
|
@ -228,6 +228,11 @@
|
||||||
<artifactId>plexus-container-default</artifactId>
|
<artifactId>plexus-container-default</artifactId>
|
||||||
<version>1.0-alpha-9-stable-1</version>
|
<version>1.0-alpha-9-stable-1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-archiver</artifactId>
|
||||||
|
<version>2.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.thoughtworks.qdox</groupId>
|
<groupId>com.thoughtworks.qdox</groupId>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue