For example, consider the following directory structure:
Project
|-- pom.xml
|-- Module1
| `-- pom.xml
|-- Module2
| `-- pom.xml
`-- Module3
`-- pom.xml
The <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.
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>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
...
<aggregate>true</aggregate>
...
</configuration>
</plugin>
</plugins>
...
</reporting>
...
</project>
The <aggregate/> parameter doesn't include generate source directories defined using the build-helper:add-source . In this case, you need to use the aggregate goal and test-aggregate goals. You could also define several <reportSet/> like the following:
<project>
...
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<reportSets>
<reportSet>
<id>non-aggregate</id>
<configuration>
...
</configuration>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
<reportSet>
<id>aggregate</id>
<configuration>
...
</configuration>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
...
</project>