Class DescriptorGeneratorMojo
java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.apache.maven.plugin.plugin.AbstractGeneratorMojo
org.apache.maven.plugin.plugin.DescriptorGeneratorMojo
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
@Mojo(name="descriptor",
defaultPhase=PROCESS_CLASSES,
requiresDependencyResolution=COMPILE_PLUS_RUNTIME,
threadSafe=true)
public class DescriptorGeneratorMojo
extends AbstractGeneratorMojo
Generate a plugin descriptor.
Note: Since 3.0, for Java plugin annotations support, default phase defined by this goal is after the "compilation" of any scripts. This doesn't override the default binding coded at generate-resources phase in Maven core.
- Since:
- 2.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.sonatype.plexus.build.incremental.BuildContextprivate booleanFlag controlling is "expected dependencies in provided scope" check to be performed or not.private FileThe directory where the generated class files will be put.private StringThe file encoding of the source files.List ofgroupId:artifactIdstrings of artifact coordinates that are to be excluded from "expected provided scope" check.List ofgroupIdstrings of artifact coordinates that are expected to be in "provided" scope.Creates links to existing external javadoc-generated documentation.The role names of mojo extractors to use.protected URIThe base URL for the Javadoc site containing the current project's API documentation.protected StringThe version of the javadoc tool (equal to the container JDK version) used to generate the internal javadoc Only relevant ifinternalJavadocBaseUrlis set.private final org.apache.maven.execution.MavenSessionSpecify the dependencies asgroupId:artifactIdcontaining (abstract) Mojos, to filter dependencies scanned at runtime and focus on dependencies that are really useful to Mojo analysis.private final org.apache.maven.tools.plugin.scanner.MojoScannerThe component used for scanning the source tree for mojos.private FileThe directory where the generatedplugin.xmlfile will be put.(package private) StringThe required Java version to set in the plugin descriptor.(package private) StringThe required Maven version to set in the plugin descriptor.private booleanA flag to disable generation of theplugin.xmlin favor of a hand authored plugin descriptor.private booleanBy default, an exception is throw if no mojo descriptor is found.private static final StringFields inherited from class AbstractGeneratorMojo
goalPrefix, LS, projectFields inherited from interface org.apache.maven.plugin.Mojo
ROLE -
Constructor Summary
ConstructorsConstructorDescriptionDescriptorGeneratorMojo(org.apache.maven.project.MavenProject project, org.apache.maven.execution.MavenSession mavenSession, org.apache.maven.tools.plugin.scanner.MojoScanner mojoScanner, org.sonatype.plexus.build.incremental.BuildContext buildContext) -
Method Summary
Modifier and TypeMethodDescription(package private) static byte[]computeGeneratorClassBytes(String packageName, String generatorClassName, String mojoName, String mojoClassName) private Set<org.apache.maven.artifact.Artifact> Collects all dependencies expected to be in "provided" scope but are NOT in "provided" scope.private org.apache.maven.plugin.descriptor.PluginDescriptorextendPluginDescriptor(org.apache.maven.tools.plugin.PluginToolsRequest request) private Set<org.apache.maven.artifact.Artifact> Get dependencies filtered with mojoDependencies configuration.voidgenerate()private voidgenerateFactories(org.apache.maven.plugin.descriptor.PluginDescriptor pd) private voidgenerateFactory(org.apache.maven.plugin.descriptor.MojoDescriptor md) private voidprivate StringgetRequiredJavaVersion(org.apache.maven.tools.plugin.PluginToolsRequest request) private StringgetRequiredMavenVersion(org.apache.maven.tools.plugin.PluginToolsRequest request) Methods inherited from class AbstractGeneratorMojo
execute, getDefaultGoalPrefixMethods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
Field Details
-
VALUE_AUTO
- See Also:
-
outputDirectory
@Parameter(defaultValue="${project.build.outputDirectory}/META-INF/maven", readonly=true) private File outputDirectoryThe directory where the generatedplugin.xmlfile will be put. -
classesOutputDirectory
@Parameter(defaultValue="${project.build.outputDirectory}", readonly=true) private File classesOutputDirectoryThe directory where the generated class files will be put. -
encoding
@Parameter(property="encoding", defaultValue="${project.build.sourceEncoding}") private String encodingThe file encoding of the source files.- Since:
- 2.5
-
skipDescriptor
@Parameter(defaultValue="false") private boolean skipDescriptorA flag to disable generation of theplugin.xmlin favor of a hand authored plugin descriptor.- Since:
- 2.6
-
extractors
The role names of mojo extractors to use.
If not set, all mojo extractors will be used. If set to an empty extractor name, no mojo extractors will be used.
Example:<!-- Use all mojo extractors --> <extractors/> <!-- Use no mojo extractors --> <extractors> <extractor/> </extractors> <!-- Use only bsh mojo extractor --> <extractors> <extractor>bsh</extractor> </extractors>The extractors with the following names ship withmaven-plugin-tools:java-annotationsjava-javadoc, deprecatedant, deprecatedbsh, deprecated
-
skipErrorNoDescriptorsFound
@Parameter(property="maven.plugin.skipErrorNoDescriptorsFound", defaultValue="false") private boolean skipErrorNoDescriptorsFoundBy 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. But for annotations, the compiled classes are needed, so skip error- Since:
- 3.0
-
checkExpectedProvidedScope
@Parameter(defaultValue="true", property="maven.plugin.checkExpectedProvidedScope") private boolean checkExpectedProvidedScopeFlag controlling is "expected dependencies in provided scope" check to be performed or not. Default value:true.- Since:
- 3.6.3
-
expectedProvidedScopeGroupIds
-
expectedProvidedScopeExclusions
List ofgroupId:artifactIdstrings of artifact coordinates that are to be excluded from "expected provided scope" check. Default value:["org.apache.maven:maven-archiver", "org.apache.maven:maven-jxr", "org.apache.maven:plexus-utils"].- Since:
- 3.6.3
-
mojoDependencies
Specify the dependencies asgroupId:artifactIdcontaining (abstract) Mojos, to filter dependencies scanned at runtime and focus on dependencies that are really useful to Mojo analysis. By default, the value isnulland all dependencies are scanned (as before this parameter was added). If specified in the configuration with no children, no dependencies are scanned.- Since:
- 3.5
-
externalJavadocBaseUrls
@Parameter(property="externalJavadocBaseUrls", alias="links") protected List<URI> externalJavadocBaseUrlsCreates links to existing external javadoc-generated documentation.
Notes: all given links should have a fetchable/package-listor/element-listfile. For instance:<externalJavadocBaseUrls> <externalJavadocBaseUrl>https://docs.oracle.com/javase/8/docs/api/</externalJavadocBaseUrl> </externalJavadocBaseUrls>
is valid becausehttps://docs.oracle.com/javase/8/docs/api/package-listexists. See link option of the javadoc tool. Using this parameter requires connectivity to the given URLs during the goal execution.- Since:
- 3.7.0
-
internalJavadocBaseUrl
The base URL for the Javadoc site containing the current project's API documentation. This may be relative to the root of the generated Maven site. It does not need to exist yet at the time when this goal is executed. Must end with a slash. In case this is set the javadoc reporting goal should be executed prior to Plugin Report.- Since:
- 3.7.0
-
internalJavadocVersion
@Parameter(property="internalJavadocVersion", defaultValue="${java.version}") protected String internalJavadocVersionThe version of the javadoc tool (equal to the container JDK version) used to generate the internal javadoc Only relevant ifinternalJavadocBaseUrlis set. The default value needs to be overwritten in case toolchains are being used for generating Javadoc.- Since:
- 3.7.0
-
requiredJavaVersion
The required Java version to set in the plugin descriptor. This is evaluated by Maven 4 and ignored by earlier Maven versions. Can be either one of the following formats:- A version range which specifies the supported Java versions. It can either use the usual mathematical
syntax like
"[1.7,9),[11,)"or use a single version like"1.8". The latter is a short form for"[1.8,)", i.e. denotes the minimum version required. "auto"to determine the minimum Java version from the binary class version being generated during compilation (determined by the extractor).
- Since:
- 3.8.0
- A version range which specifies the supported Java versions. It can either use the usual mathematical
syntax like
-
requiredMavenVersion
The required Maven version to set in the plugin descriptor. This is evaluated by Maven 4 and ignored by earlier Maven versions. Can be either one of the following formats:- A version range which specifies the supported Maven versions. It can either use the usual mathematical
syntax like
"[2.0.10,2.1.0),[3.0,)"or use a single version like"2.2.1". The latter is a short form for"[2.2.1,)", i.e. denotes the minimum version required. "auto"to determine the minimum Maven version from the POM's Maven prerequisite, or if not set the referenced Maven Plugin API version.
- Since:
- 3.8.0
- A version range which specifies the supported Maven versions. It can either use the usual mathematical
syntax like
-
mavenSession
private final org.apache.maven.execution.MavenSession mavenSession -
mojoScanner
private final org.apache.maven.tools.plugin.scanner.MojoScanner mojoScannerThe component used for scanning the source tree for mojos. -
buildContext
protected final org.sonatype.plexus.build.incremental.BuildContext buildContext
-
-
Constructor Details
-
DescriptorGeneratorMojo
@Inject public DescriptorGeneratorMojo(org.apache.maven.project.MavenProject project, org.apache.maven.execution.MavenSession mavenSession, org.apache.maven.tools.plugin.scanner.MojoScanner mojoScanner, org.sonatype.plexus.build.incremental.BuildContext buildContext)
-
-
Method Details
-
generate
public void generate() throws org.apache.maven.plugin.MojoExecutionException- Specified by:
generatein classAbstractGeneratorMojo- Throws:
org.apache.maven.plugin.MojoExecutionException
-
generateIndex
private void generateIndex() throws org.apache.maven.tools.plugin.generator.GeneratorException- Throws:
org.apache.maven.tools.plugin.generator.GeneratorException
-
generateFactories
private void generateFactories(org.apache.maven.plugin.descriptor.PluginDescriptor pd) throws org.apache.maven.tools.plugin.generator.GeneratorException - Throws:
org.apache.maven.tools.plugin.generator.GeneratorException
-
generateFactory
private void generateFactory(org.apache.maven.plugin.descriptor.MojoDescriptor md) throws IOException - Throws:
IOException
-
computeGeneratorClassBytes
-
extendPluginDescriptor
private org.apache.maven.plugin.descriptor.PluginDescriptor extendPluginDescriptor(org.apache.maven.tools.plugin.PluginToolsRequest request) -
getRequiredMavenVersion
-
getRequiredJavaVersion
-
dependenciesNotInProvidedScope
Collects all dependencies expected to be in "provided" scope but are NOT in "provided" scope. -
filterMojoDependencies
Get dependencies filtered with mojoDependencies configuration.- Returns:
- eventually filtered dependencies, or even
nullif configured with empty mojoDependencies list - See Also:
-