Apache Maven Reporting Executor
Classes to prepare report plugins execution with Maven 3, through MavenReportExecutor (implementation).
Contrary to Maven 2.x:
- report
<version>
explicit definition is optional:
if no version is specified for a report plugin, version is determined by- searching for the plugin in the
build/plugins
section of the pom, - searching for the plugin in the
build/pluginManagement
section of the pom, - asking PluginVersionResolver to get a fallback version and display a warning as it's not a recommended use,
- searching for the plugin in the
- plugin configuration from
build/pluginManagement
is injected intoreporting/plugins
(since Maven Reporting Executor 1.2, which is used by Maven Site Plugin 3.4).
Notice on now obsolete reportPlugin format
Since 1.4 (used by Maven Site Plugin 3.7), the request can (and should) be populated from pom's <reporting.plugins>
section, injected in Mojo parameter as ${project.reporting.plugins}
default value:
@Parameter( defaultValue = "${project.reporting.plugins}", readonly = true ) private org.apache.maven.model.ReportPlugin[] reportingPlugins;
This section is kept to explain what happened in previous releases of the component, but this approach has been abandonned so far after discovering major limitations: see Maven Site Plugin 3.9.0 documentation for more details.
Report plugins can be configured in <configuration>
element of maven-site-plugin
or any other report building plugin with following XML model corresponding to plugin's List<ReportPlugin
> parameter:
<reportPlugins> <reportPlugin> <groupId/> <artifactId/> <version/> <configuration/> <reports/> <reportSets> <reportSet> <id/> <configuration/> <reports/> </reportSet> </reportSets> </reportPlugin> </reportPlugins>
Notice this is the model from plugins in <reporting>
section of POM:
- without
<inherited>
element: reporting plugins configuration inheritance is not supported at this level (see MSITE-484), - with additional
<reports>
list outside<reportSet>
that simplifies reports configuration in usual cases.
Maven 3 core makes an automatic transformation of <reporting>
POM section (which supports configuration inheritance) to maven-site-plugin
's reportPlugins
configuration through the ReportingConverter component.
But Maven 3 does not do the same job for any other plugin wanting to use reports, like maven-pdf-plugin
for example: this is one of the key limitations that made Maven team drop this approach.