Apache Maven Reporting Executor

Classes to prepare report plugins execution with Maven 3, through MavenReportExecutor (implementation).

Since 1.4, the request can (and should) be populated from pom's <reporting> 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;

Contrary to Maven 2.x, report <version> explicit definition is optional: if no version is specified for a report plugin, version is determined by

  1. searching for the plugin in the build/plugins section of the pom,
  2. searching for the plugin in the build/pluginManagement section of the pom,
  3. asking PluginVersionResolver to get a fallback version and display a warning as it's not a recommended use.

Since maven-reporting-exec 1.2 (which is used by maven-site-plugin 3.4), plugin configuration in build/pluginManagement is also injected into reports.

Notice on now obsolete reportPlugin format

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 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.