Maven can generate a site. It should be standard, it should be easy, but it's not. Due to various bugs and plugins having to work together perfectly, generating a site is super messy.
After much pain and horror of trial and error I came to the following configuration using maven 3:
<profile>
<id>maven-3</id>
<activation>
<file>
<!-- This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->
<exists>${basedir}</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0-beta-3</version>
<configuration>
<reportPlugins>
<!--To make the dependency report generation faster -->
<plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.3.1</version>
<configuration> <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
</configuration>
<reportSets>
<reportSet>
<reports>
<report>index</report>
<report>project-team</report>
<report>summary</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- Uses the Javadoc tool to generate javadocs -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8</version>
<configuration>
<excludePackageNames>
our.company.testutils.*
</excludePackageNames>
</configuration>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
</profile>Our codebase uses maven 2 and maven 3 for different builds, that's why it's configured inside a profile.
Most reports (especially dependencies) are not enabled because this build is already taking far to long (about 45 minutes for 65 modules, of which 6 or so are parent poms).
Running the build using (important!):
clean install javadoc:javadoc site:site site:deploy -DskipTests "Install" because it makes the submodules "know" about the parent module built artifacts. Javadoc is done explicit so it does not run inside the reporting (site will include them). Site is called twice to make sure parent and submodules will be linked. Jikes.
For those needing to do more or less the same, good luck!