<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
  ~ Copyright 2006 The Apache Software Foundation.
  ~
  ~ Licensed 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 name="Maven Assembly Plugin">
  <bannerLeft>
    <name>Maven Assembly Plugin</name>
    <src>http://maven.apache.org/images/apache-maven-project.png</src>
    <href>http://maven.apache.org/</href>
  </bannerLeft>
  <bannerRight>
    <src>http://maven.apache.org/images/maven-small.gif</src>
  </bannerRight>
  <body>
    <links>
      <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
    </links>

    <menu name="Overview">
      <item name="Introduction" href="index.html"/>
      <item name="Goals" href="plugin-info.html"/>
      <item name="Usage" href="usage.html"/>
      <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"/>
      <item name="FAQ" href="faq.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>
    </menu>

    ${reports}

  </body>
</project>
