blob: c10e09457eba18660b1e4c694a2a041022b05b47 [file] [log] [blame]
------
Aggregating Javadocs for Multi-Projects
------
Maria Odea Ching
Vincent Siveton
------
2009-08-04
------
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
Aggregating Javadocs For Multi-Projects
For example, consider the following directory structure:
+-----+
Project
|-- pom.xml
|-- Module1
| `-- pom.xml
| `-- Module 2
| `-- pom.xml
| `-- Module 3
| `-- pom.xml
|-- Module4
| `-- pom.xml
`-- Module5
`-- pom.xml
+-----+
* Using The \<aggregate/\> Parameter (<<deprecated>>)
<<Note>>: {{{../javadoc-mojo.html#aggregate}\<aggregate/\>}} parameter is <<deprecated>> since 2.5. Please use the
<<<aggregate>>> goal instead of.
The {{{../javadoc-mojo.html#aggregate}\<aggregate/\>}} parameter can be used to generate javadocs for multi-module
projects. It gives the option to generate one javadoc report for the entire project (all modules) or generate one
javadoc report for each module. Since 3.1.0 the <<<aggregate>>> has changed a little bit. It'll generate aggregated
reports at every level.
To get only an aggregated project at root level, you need to configure the pom like:
+-----+
<project>
...
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${project.version}</version>
<reportSets>
<reportSet>
<id>aggregate</id>
<inherited>false</inherited>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
<reportSet>
<id>default</id>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
...
</reporting>
...
</project>
+-----+
When you execute javadoc:javadoc from Project directory with aggregate set to <<true>>, a javadoc report will be created
in the target directory of Project with all the javadocs of Project's modules included. If aggregate is
set to <<false>> (default), a javadoc report for Module1 will be generated in the target directory of Module1, a javadoc
report for Module2 will be generated in the target directory of Module2, and a javadoc report for Module3 will be
generated in the target directory of Module3.
+-----+
<project>
...
<reporting> (or <build>)
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${project.version}</version>
<configuration>
...
<aggregate>true</aggregate>
...
</configuration>
</plugin>
</plugins>
...
</reporting> (or </build>)
...
</project>
+-----+
* Using The <<<aggregate>>> Goals
The {{{../javadoc-mojo.html#aggregate}\<aggregate/\>}} parameter doesn't include generate source directories defined
using the {{{http://mojo.codehaus.org/build-helper-maven-plugin/add-source-mojo.html}build-helper:add-source}}. In
this case, you need to use the <<<aggregate>>> goal and <<<test-aggregate>>> goals. You could define these goals in the
\<build/\> element (using the \<execution/\> tag) or \<reporting/\> element (using the \<reportSet/\> tag) as shown
below. For more information, refer to the {{{./selective-javadocs-report.html}Selective Javadocs Reports page}}.
+-----+
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<!-- Default configuration for all reports -->
...
</configuration>
<executions>
<execution>
<id>aggregate</id>
<goals>
<goal>aggregate</goal>
</goals>
<phase>site</phase>
<configuration>
<!-- Specific configuration for the aggregate report -->
...
</configuration>
</execution>
...
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
+-----+
+-----+
<project>
...
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<!-- Default configuration for all reports -->
...
</configuration>
<reportSets>
<reportSet>
<id>non-aggregate</id>
<configuration>
<!-- Specific configuration for the non aggregate report -->
...
</configuration>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
<reportSet>
<id>aggregate</id>
<configuration>
<!-- Specific configuration for the aggregate report -->
...
</configuration>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
...
</reportSets>
</plugin>
...
</plugins>
</reporting>
...
</project>
+-----+
The Javadoc plugin contains several <<<aggregate>>> goals to be use with an aggregator project. Here is the full list
of all <<<aggregate>>> goals:
* {{{../aggregate-mojo.html}javadoc:aggregate}} to generate the Javadoc files.
* {{{../test-aggregate-mojo.html}javadoc:test-aggregate}} to generate the test Javadoc files.
* {{{../aggregate-jar-mojo.html}javadoc:aggregate-jar}} to create an archive file of the Javadoc files.
* {{{../test-aggregate-jar-mojo.html}javadoc:test-aggregate-jar}} to create an archive file of the test Javadoc files.
[]