 ------
 Using Tag Type
 ------
 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/doxia/references/apt-format.html


Using Tag Type

  To generate the changelog reports showing what has changed between two tags,
  you should use the "tag" <<<type>>>.

  With the following configuration, reports will be generated that covers SCM
  activities between the <<<alpha-2>>> tag and the <<<alpha-3>>> tag.

  <<Note:>> The "tag" type is not supported if you are using Subversion.  

+-----+
<project>
  ...
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changelog-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <type>tag</type>
          <tags>
            <tag implementation="java.lang.String">alpha-2</tag>
            <tag implementation="java.lang.String">alpha-3</tag>
          </tags>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  ...
</project>
+-----+
