 ------
 Grouping Packages
 ------
 Vincent Siveton
 Maria Odea Ching
 ------
 2009-09-12
 ------

~~ 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

Grouping Packages

 To set a grouping for different packages, use the {{{../javadoc-mojo.html#groups}\<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
 {{{http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#group}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>${project.version}</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>
+-----+
