 ------
 Usage
 ------
 31 July 2006
 ------

 ~~ 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/guides/mini/guide-apt-format.html


Usage

 The reports may use either <<<range>>>, <<<date>>>, or <<<tag>>> as the basis
 for generating the reports. Only one can be set. The change sets can be
 configured by setting the correct parameter for the chosen type. If <<<type>>>
 "date" is chosen, then the parameter <<<dates>>> should contain the start and
 stop dates for the date range. Similar configurations should be made for the
 "range" and "tag" types.

 To generate the changelog reports, just add the following in your project's
 <<<pom.xml>>>:

+-----+
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changelog-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
  ...
</project>
+-----+

 Aside from the required plugin configuration parameters needed to generate the
 reports, all reports will refer to the <<<scm>>> elements inside the project
 descriptor for other details regarding the connection to the project's SCM.
 Here is an example of the scm element inside the <<<pom.xml>>>:

-------------------
<project>
  ...
  <scm>
    <connection>scm:svn:http://server/path/to/project/trunk</connection>
    <developerConnection>scm:svn:https://server/path/to/project/trunk</developerConnection>
    <url>scm:svn:http://server/path/to/view/trunk</url>
  </scm>
  ...
</project>
-------------------

 Please refer to the Maven project descriptor for the description of the
 <<<scm>>> elements. It can be found
 {{{http://maven.apache.org/ref/current/maven-model/maven.html#class_scm}here}}.

 When you execute <<<mvn site>>>, you will see that the changelog, dev-activity
 and file-activity reports are included in the generated site.

 Sample Changelog report:

[images/sample-changelog-report.PNG] Sample Changelog Report


 Sample Developer Activity report:

[images/sample-dev-activity-report.PNG] Sample Developer Activity Report


 Sample File Activity report:

[images/sample-file-activity-report.PNG] Sample File Activity Report
