[ http://jira.codehaus.org/browse/MJAVADOC-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=251366#action_251366 ]
Andy Schlaikjer commented on MJAVADOC-286: ------------------------------------------ Here's a workaround I've found useful for generating cross-linked javadoc reports for all modules in a multi-module project while avoiding infinite recursion and/or Java out of heap memory errors: Environment: * Java 6 * Maven 3.0.1 * maven-javadoc-plugin:2.7 * maven-site-plugin:3.0-beta-3 Project layout: {noformat} / # project root |- pom.xml # parent pom |- module1/ # | `- pom.xml # inherits from /pom.xml `- module2/ # | `- pom.xml # inherits from /pom.xml `- childmulti/ # child multi-module |- pom.xml # intermediate parent pom, inherits from /pom.xml |- module3/ # | `- pom.xml # inherits from /childmulti/pom.xml `- module4/ # `- pom.xml # inherits from /childmulti/pom.xml {noformat} Within {{/pom.xml}}: {noformat} <project> ... <url>http://${host.name}/site/${site.name}/</url> ... <build> <pluginManagement> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.7</version> </plugin> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.0-beta-3</version> <configuration> <reportPlugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <detectLinks>false</detectLinks> <detectOfflineLinks>true</detectOfflineLinks> </configuration> <reports> <report>javadoc</report> </reports> </plugin> <!-- add more report plugins here --> </reportPlugins> </configuration> </plugin> </plugins> </pluginManagement> </build> ... </project> {noformat} Within {{/childmulti/pom.xml}}: {noformat} <project> ... <url>http://${host.name}/site/${site.name}/childmulti/</url> ... </project> {noformat} Notice that I've configured maven-javadoc-plugin to use the {{javadoc:javadoc}} report goal only, not the {{javadoc:aggregator}} report goal. In addition, the {{detectOfflineLinks}} parameter has been turned on. Using this config, if an aggregate site build is executed within the multi-module project root, the {{javadoc:javadoc}} report goal is executed independently for each module, but (due to behavior of {{detectOfflineLinks}}) each set of javadocs properly cross-references other modules' javadocs. One note: With this setup, the {{javadoc:javadoc}} report goal tries to fetch module poms from a repository during execution, instead of accessing the copies in your working directory, so all modules must be installed prior to execution of the site reactor build: {noformat} $ cd /path/to/project/root/ $ mvn install $ mvn site {noformat} > Version 2.7 in Maven Reactor may cause infinite recursion, symptoms similar > to MJAVADOC-268 > ------------------------------------------------------------------------------------------- > > Key: MJAVADOC-286 > URL: http://jira.codehaus.org/browse/MJAVADOC-286 > Project: Maven 2.x Javadoc Plugin > Issue Type: Bug > Affects Versions: 2.6 > Environment: Apache Maven 2.2.0 (r788681; 2009-06-26 15:04:01+0200) > Java version: 1.6.0_13 > Java home: /home/mkleint/javatools/jdk1.6.0_13/jre > Default locale: en_US, platform encoding: UTF-8 > OS name: "linux" version: "2.6.29.6-desktop-2mnb" arch: "i386" Family: "unix" > Reporter: Parag Mehta > Assignee: Vincent Siveton > Priority: Critical > Fix For: 2.6.1 > > Attachments: MJAVADOC-286.diff > > > The getModulesLinks() method is unacceptably slow under certain conditions: > 1. project's url is defined > 2. one or more projects in reactor do not have any java sources and are not > of "pom" packaging. > For such projects the apidocs/ output folder is never created resulting in > repeated invokation of a forked javadoc goal. It's more severe with high > number of modules in reactor and high number of modules without any java > sources. > as an example checkout "hg clone https://hg.kenai.com/hg/forceten~src" > The immediate problem is in the apidocsFile.exists() condition that > re-triggers the forked invokation. The attached patch fixes that. However it > looks suspicitions that the method is being called repeatedly for each module > at all. Maybe the aborting condition at the start of the method body is wrong > (I was not able to decypher that) > workaround is to use 2.5 or not to specify the url in pom.xml or set the > detectOfflineLinks parameter to "false". -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira