Index: src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java (revision 685235) +++ src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java (working copy) @@ -1310,6 +1310,16 @@ // ---------------------------------------------------------------------- /** + * Indicates whether this goal is flagged with "@aggregator". + * + * @return true if the goal is designed as an aggregator, false otherwise. + */ + protected boolean isAggregator() + { + return false; + } + + /** * @return the output directory */ protected String getOutputDirectory() @@ -1441,7 +1451,7 @@ return; } - if ( aggregate && !project.isExecutionRoot() ) + if ( isAggregator() && !project.isExecutionRoot() ) { return; } @@ -1641,7 +1651,7 @@ } } - if ( aggregate && project.isExecutionRoot() ) + if ( isAggregator() && project.isExecutionRoot() ) { for ( Iterator i = reactorProjects.iterator(); i.hasNext(); ) { @@ -1822,7 +1832,7 @@ populateCompileArtifactMap( compileArtifactMap, getProjectArtifacts( project ) ); - if ( aggregate && project.isExecutionRoot() ) + if ( isAggregator() && project.isExecutionRoot() ) { try { @@ -2880,7 +2890,7 @@ List offlineLinksList = ( offlineLinks != null ? new ArrayList( Arrays.asList( offlineLinks ) ) : new ArrayList() ); - if ( !aggregate && reactorProjects != null ) + if ( !isAggregator() && reactorProjects != null ) { String javadocDirRelative = PathUtils.toRelative( project.getBasedir(), getOutputDirectory() ); @@ -3116,7 +3126,7 @@ JavadocUtil.copyJavadocResources( anOutputDirectory, getJavadocDirectory(), excludedocfilessubdir ); } - if ( aggregate && project.isExecutionRoot() ) + if ( isAggregator() && project.isExecutionRoot() ) { for ( Iterator i = reactorProjects.iterator(); i.hasNext(); ) { Index: src/main/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReport.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReport.java (revision 685235) +++ src/main/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReport.java (working copy) @@ -19,11 +19,6 @@ * under the License. */ -import java.util.Locale; - -import org.apache.maven.reporting.MavenReportException; -import org.codehaus.doxia.sink.Sink; - /** * Generates documentation for the Java code in an aggregator project using the standard * Javadoc Tool. @@ -39,13 +34,11 @@ public class AggregatorJavadocReport extends JavadocReport { + /** {@inheritDoc} */ - public void generate( Sink sink, Locale locale ) - throws MavenReportException + protected boolean isAggregator() { - // operate always in aggregation mode - aggregate = true; - - super.generate( sink, locale ); + return true; } + } Index: src/main/java/org/apache/maven/plugin/javadoc/AggregatorTestJavadocReport.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/AggregatorTestJavadocReport.java (revision 685235) +++ src/main/java/org/apache/maven/plugin/javadoc/AggregatorTestJavadocReport.java (working copy) @@ -19,11 +19,6 @@ * under the License. */ -import java.util.Locale; - -import org.apache.maven.reporting.MavenReportException; -import org.codehaus.doxia.sink.Sink; - /** * Generates documentation for the Java Test code in an aggregator project using the standard * Javadoc Tool. @@ -39,13 +34,11 @@ public class AggregatorTestJavadocReport extends TestJavadocReport { + /** {@inheritDoc} */ - public void generate( Sink sink, Locale locale ) - throws MavenReportException + protected boolean isAggregator() { - // operate always in aggregation mode - aggregate = true; - - super.generate( sink, locale ); + return true; } + } Index: src/main/java/org/apache/maven/plugin/javadoc/JavadocJar.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/JavadocJar.java (revision 685235) +++ src/main/java/org/apache/maven/plugin/javadoc/JavadocJar.java (working copy) @@ -166,9 +166,6 @@ innerDestDir = new File( getOutputDirectory() ); } - // The JAR does not operate in aggregation mode - individual Javadoc JARs are always distributed. - aggregate = false; - ArtifactHandler artifactHandler = project.getArtifact().getArtifactHandler(); if ( !"java".equals( artifactHandler.getLanguage() ) ) { Index: src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java (revision 685235) +++ src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java (working copy) @@ -138,10 +138,14 @@ public boolean canGenerateReport() { boolean canGenerate; - if ( aggregate && !project.isExecutionRoot() ) + if ( aggregate != isAggregator() ) { canGenerate = false; } + else if ( isAggregator() && !project.isExecutionRoot() ) + { + canGenerate = false; + } else { List sourcePaths = getSourcePaths();