Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 2.6
-
Fix Version/s: 2.8
-
Labels:None
-
Environment:HideApache 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"ShowApache 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"
-
Patch Submitted:Yes
-
Number of attachments :
Description
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".
Issue Links
- relates to
-
MJAVADOC-268
performance problem in AbstractJavadocMojo.getModulesLinks()
-
-
MJAVADOC-284
detectOfflineLinks sets off extra spurious executions of javadoc
-
I have a question: why is a module trying to reference javadoc section of a module which it doesn't depend on?
since the reactor should build modules in an order that preserves dependencies compilation order, IMHO, when a module hasn't been previously built (with its javadoc), it shows that there is no dependency on it, then it can safely be ignored
did I miss something?