<?xml version="1.0" encoding="UTF-8"?>

<!--
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.
-->

<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
  <body>
    <menu name="Overview">
      <item name="Introduction" href="index.html"/>
      <item name="Goals" href="plugin-info.html"/>
      <item name="Usage" href="usage.html"/>
      <item name="FAQ" href="faq.html"/>
      <item name="Using the XML Schema" href="using-changes-xsd.html"/>
      <!-- According to https://issues.apache.org/jira/browse/MNGSITE-152 -->
      <item name="License" href="http://www.apache.org/licenses/"/>
      <item name="Download" href="download.html"/>
    </menu>
    <menu name="Reference">
      <item name="changes.xml" href="changes.html"/>
      <item name="changes.xsd" href="xsd/changes-1.0.0.xsd"/>
    </menu>
    <menu name="Samples">
      <item name="Sample Changes Report" href="changes-report.html"/>
    </menu>
    <menu name="Examples">
      <item name="Alternate Location for the changes.xml File" href="examples/alternate-changes-xml-location.html"/>
      <item name="Check Your changes.xml File" href="examples/check-changes-file.html"/>
      <item name="Configuring the Trac Report" href="examples/configuring-trac-report.html"/>
      <item name="Customizing the JIRA Report" href="examples/customizing-jira-report.html"/>
      <item name="Configuring the GitHub Report" href="examples/configuring-github-report.html"/>
      <item name="Include an Announcement File in Your Packaging" href="examples/include-announcement-file.html"/>
      <item name="SMTP Authentication" href="examples/smtp-authentication.html"/>
      <item name="Specifying the Mail Sender" href="examples/specifying-mail-sender.html"/>
      <item name="Using a Custom Announcement Template" href="examples/using-a-custom-announcement-template.html"/>
      <item name="Validate Your changes.xml File" href="examples/changes-file-validation.html"/>
    </menu>
  </body>
</project>
