[ https://jira.codehaus.org/browse/MSITE-484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=279696#comment-279696 ]
Eric Dalquist edited comment on MSITE-484 at 9/22/11 3:26 PM: -------------------------------------------------------------- This patch (against r1170684) provides robust support for merging PlexusConfiguration objects. I've included a unit test which demonstrates the functionality and have tested it locally with various plugin overlays with great success. For example if the parent pom's maven-site-plugin is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <reportPlugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>2.8</version> <configuration> <links> <link>http://java.sun.com/javase/6/docs/api/</link> <link>http://java.sun.com/javaee/5/docs/api/</link> </links> <source>1.6</source> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} And the child project pom's maven-site-plugin is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <defaultMergePolicy>MERGE</defaultMergePolicy> <reportPlugins combine.children="append"> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <links mergePolicy.children="BOTH" mergePolicy.removeDuplicates="true"> <link>http://static.springsource.org/spring/docs/3.0.x/api/</link> <link>http://ehcache.org/apidocs/</link> <link>http://aopalliance.sourceforge.net/doc/</link> <link>http://java.sun.com/javase/6/docs/api/</link> </links> <maxmemory>768m</maxmemory> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} The runtime effective result is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <defaultMergePolicy>MERGE</defaultMergePolicy> <reportPlugins combine.children="append"> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <links mergePolicy.children="BOTH" mergePolicy.removeDuplicates="true"> <link>http://static.springsource.org/spring/docs/3.0.x/api/</link> <link>http://ehcache.org/apidocs/</link> <link>http://aopalliance.sourceforge.net/doc/</link> <link>http://java.sun.com/javase/6/docs/api/</link> <link>http://java.sun.com/javaee/5/docs/api/</link> </links> <source>1.6</source> <maxmemory>768m</maxmemory> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} was (Author: edalquist): This patch provides robust support for merging PlexusConfiguration objects. I've included a unit test which demonstrates the functionality and have tested it locally with various plugin overlays with great success. For example if the parent pom's maven-site-plugin is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <reportPlugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>2.8</version> <configuration> <links> <link>http://java.sun.com/javase/6/docs/api/</link> <link>http://java.sun.com/javaee/5/docs/api/</link> </links> <source>1.6</source> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} And the child project pom's maven-site-plugin is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <defaultMergePolicy>MERGE</defaultMergePolicy> <reportPlugins combine.children="append"> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <links mergePolicy.children="BOTH" mergePolicy.removeDuplicates="true"> <link>http://static.springsource.org/spring/docs/3.0.x/api/</link> <link>http://ehcache.org/apidocs/</link> <link>http://aopalliance.sourceforge.net/doc/</link> <link>http://java.sun.com/javase/6/docs/api/</link> </links> <maxmemory>768m</maxmemory> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} The runtime effective result is: {code:xml} <plugin> <artifactId>maven-site-plugin</artifactId> <configuration> <defaultMergePolicy>MERGE</defaultMergePolicy> <reportPlugins combine.children="append"> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <links mergePolicy.children="BOTH" mergePolicy.removeDuplicates="true"> <link>http://static.springsource.org/spring/docs/3.0.x/api/</link> <link>http://ehcache.org/apidocs/</link> <link>http://aopalliance.sourceforge.net/doc/</link> <link>http://java.sun.com/javase/6/docs/api/</link> <link>http://java.sun.com/javaee/5/docs/api/</link> </links> <source>1.6</source> <maxmemory>768m</maxmemory> </configuration> </plugin> </reportPlugins> </configuration> </plugin> {code} > Support adding and overriding report plugins in new maven-site-plugin 3.x > reportPlugins configuration format > ------------------------------------------------------------------------------------------------------------ > > Key: MSITE-484 > URL: https://jira.codehaus.org/browse/MSITE-484 > Project: Maven 2.x and 3.x Site Plugin > Issue Type: Bug > Components: inheritance, Maven 3 > Affects Versions: 3.0-beta-1, 3.0-beta-2, 3.0-beta-3 > Environment: 3.0-beta-1-SNAPSHOT > Reporter: Michael Pilquist > Assignee: Olivier Lamy > Fix For: 3.1 > > Attachments: MSITE-484.patch, site-cfg-inheritance.zip > > > 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: > {code} > [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 > {code} > 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. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira