<?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="Reference">
      <item name="Features" href="./features.html"/>
      <item name="Descriptor Format" href="./assembly.html"/>
      <item name="Component Format" href="./component.html"/>
      <item name="Predefined Descriptors" href="./descriptor-refs.html"/>
    </menu>

    <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"/>
      <!-- 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="Advanced Topics">
      <item name="Assembly Descriptors" href="./advanced-descriptor-topics.html"/>
      <item name="ModuleSets" href="./advanced-module-set-topics.html"/>
    </menu>

    <menu name="Examples">
      <item name="Examples Index" href="./examples/index.html"/>
      <item name="Single Project" collapse="false" href="./examples/single/index.html">
        <item name="Filtering Some Distribution Files" href="./examples/single/filtering-some-distribution-files.html"/>
        <item name="Including/Excluding Artifacts" href="./examples/single/including-and-excluding-artifacts.html"/>
        <item name="Using Component Descriptors" href="./examples/single/using-components.html"/>
        <item name="Using Repositories" href="./examples/single/using-repositories.html"/>
      </item>
      <item name="Multimodule Projects" collapse="false" href="./examples/multimodule/index.html">
        <item name="Include Module Artifacts" href="./examples/multimodule/module-binary-inclusion-simple.html"/>
        <item name="Include Module Sources" href="./examples/multimodule/module-source-inclusion-simple.html"/>
      </item>
      <item name="Sharing Assembly Descriptors" href="./examples/sharing-descriptors.html"/>
    </menu>
  </body>
</project>
