Grouping Packages

To set a grouping for different packages, use the <groups/> parameter as shown below. Each group will be consist of a <title/> and a <packages/> (as String). The <packages/> element supports wildcard (*) to allow subpackages. If more than one package is to be included, each package name must be separated colon (:) separated (similar to the Javadoc Tool).

For instance, with the following packages:

com.mycompany.myapp
com.mycompany.myapp.package1
com.mycompany.myapp.package1.subpackage1
com.mycompany.myapp.package1.subpackage2
com.mycompany.myapp.package1.subpackage3
com.mycompany.myapp.package1.util
com.mycompany.myapp.package2
com.mycompany.myapp.package2.subpackage4
com.mycompany.myapp.package2.subpackage5
com.mycompany.myapp.package2.util

You could have the following configuration:

<project>
  ...
  <reporting> (or <build>)
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <groups>
            <group>
              <title>Example 1 - Group Packages</title>
              <!--
              Include packages:
                com.mycompany.myapp
                com.mycompany.myapp.package1
              BUT exclude all subpackages
              -->
              <packages>com.mycompany.myapp:com.mycompany.myapp.package1</packages>
            </group>
            <group>
              <title>Example 2 - Group Packages</title>
              <!--
              Include packages:
                com.mycompany.myapp.package1.subpackage1
                com.mycompany.myapp.package1.subpackage2
                com.mycompany.myapp.package1.subpackage3
                com.mycompany.myapp.package1.util
              BUT exclude the root package:
                com.mycompany.myapp.package1
              -->
              <packages>com.mycompany.myapp.package1.*</packages>
            </group>
            <group>
              <title>Example 3 - Group Packages</title>
              <!--
              Include packages:
                com.mycompany.myapp.package1
                com.mycompany.myapp.package1.subpackage1
                com.mycompany.myapp.package1.subpackage2
                com.mycompany.myapp.package1.subpackage3
                com.mycompany.myapp.package1.util
              -->
              <packages>com.mycompany.myapp.package1*</packages>
            </group>
            <group>
              <title>Example 4 - Group Packages</title>
              <!--
              Include packages:
                com.mycompany.myapp.package1
                com.mycompany.myapp.package1.subpackage1
                com.mycompany.myapp.package1.subpackage2
                com.mycompany.myapp.package1.subpackage3
                com.mycompany.myapp.package1.util
                com.mycompany.myapp.package2
                com.mycompany.myapp.package2.subpackage4
                com.mycompany.myapp.package2.subpackage5
                com.mycompany.myapp.package2.util
              -->
              <packages>com.mycompany.myapp.package*</packages>
            </group>
            <group>
              <title>Example 5 - Group Packages</title>
              <!--
              Include packages:
                com.mycompany.myapp.package1.subpackage1
                com.mycompany.myapp.package1.subpackage2
                com.mycompany.myapp.package1.subpackage3
                com.mycompany.myapp.package1.util
                com.mycompany.myapp.package2.subpackage4
                com.mycompany.myapp.package2.subpackage5
                com.mycompany.myapp.package2.util
              BUT exclude the root packages:
                com.mycompany.myapp.package1
                com.mycompany.myapp.package2
              -->
              <packages>com.mycompany.myapp.package1.*:com.mycompany.myapp.package2.*</packages>
            </group>
            <group>
              <title>Example 6 - Group Packages</title>
              <!--
              Include nothing.
              The packages com.mycompany.myapp.package1.util and com.mycompany.myapp.package2.util
              will be in "Other Packages" group
              -->
              <packages>*.util.*</packages>
            </group>
          </groups>
          ...
        </configuration>
      </plugin>
      ...
    </plugins>
    ...
  </reporting> (or </build>)
  ...
</project>