When using the new configuration format for reportPlugins, it appears that there's no way to:
- Add a report plugin to a submodule
- Override the configuration of a report plugin in a submodule
Using the old <reporting> section, both of these use cases were supported. For large, multi-module builds, it is problematic having to respecify all reporting plugins in any submodule pom that needs to either add an additional reporting plugin or change the configuration of a reporting plugin.
Attached is a sample project that has a parent POM configured with project-info-reports and javadoc plugin and a submodule configured with jxr plugin and javadoc plugin. The relevant output is here:
[INFO] ------------------------------------------------------------------------
[INFO] Building parent 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ parent ---
[INFO] Deleting file set: /Users/mpilquist/Downloads/site-parent-issue/target (included: [**], excluded: [])
[INFO]
[INFO] --- maven-site-plugin:3.0-beta-1-SNAPSHOT:site (default-site) @ parent ---
[INFO] configuring reportPlugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.2
[INFO] configuring reportPlugin org.apache.maven.plugins:maven-javadoc-plugin:2.6.1
...
[INFO] ------------------------------------------------------------------------
[INFO] Building parent-usage-test 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ parent-usage-test ---
[INFO]
[INFO] --- maven-site-plugin:3.0-beta-1-SNAPSHOT:site (default-site) @ parent-usage-test ---
[INFO] configuring reportPlugin org.apache.maven.plugins:maven-jxr-plugin:2.1
[INFO] configuring reportPlugin org.apache.maven.plugins:maven-javadoc-plugin:2.6.1
Looking at the maven-site-plugin code, it appears the the reportPlugins parameter is just a regular array parameter. AFAIK, there's no way to merge list configuration items. Other plugins have worked around this by defining additional mojo parameters (e.g., maven-eclipse-plugin and buildCommands / additionalBuildCommands – http://maven.apache.org/plugins/maven-eclipse-plugin/eclipse-mojo.html). This isn't the most flexible option though as it only solves 1 level inheritance.
What you have to do is to add to indicate how to merge site plugin configuration when maven build the model
in the child pom, you can change to ( attribute combine.children="append" )
btw this doesn't fix overriding configuration, with this trick some plugins can be executed more than one time