<?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">
  <bannerLeft>
    <src>http://maven.apache.org/images/apache-maven-project.png</src>
    <href>http://www.apache.org/</href>
  </bannerLeft>

  <bannerRight>
    <src>http://maven.apache.org/images/maven-logo-black-on-white.png</src>
    <href>http://maven.apache.org/</href>
  </bannerRight>
  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.7</version>
  </skin>

  <custom>
    <fluidoSkin>
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <googlePlusOne />
      <googleSearch>
        <sitesearch>maven.apache.org/plugins/maven-ear-plugin/</sitesearch>
      </googleSearch>
    </fluidoSkin>
  </custom>

  <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"/>
      <!-- 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="Configuration">
      <item name="Modules" href="modules.html"/>
    </menu>

    <menu name="Examples">
      <item name="Filtering EAR Resources" href="examples/filtering-sources.html"/>
      <item name="Advanced Filtering Techniques" href="examples/filtering-advanced.html"/>
      <item name="Creating Skinny WARs" href="examples/skinny-wars.html"/>
      <item name="Customizing A Module Filename" href="examples/customizing-a-module-filename.html"/>
      <item name="Customizing The Context Root" href="examples/customizing-context-root.html"/>
      <item name="Customizing A Module Location" href="examples/customizing-module-location.html"/>
      <item name="Customizing A Module URI" href="examples/customizing-module-uri.html"/>
      <item name="Excluding A Module" href="examples/excluding-a-module.html"/>
      <item name="Excluding Files From the EAR" href="examples/excluding-files-from-ear.html"/>
      <item name="Unpacking A Module" href="examples/unpacking-a-module.html"/>
      <item name="Including A Third Party Library In application.xml" href="examples/including-a-third-party-library-in-application-xml.html"/>
      <item name="Specifying Security Roles For The Generated application.xml" href="examples/specifying-security-roles-for-the-generated-application-xml.html"/>
      <item name="Specifying Environment Entries In application.xml" href="examples/specifying-env-entries-for-the-generated-application-xml.html"/>
      <item name="Generating jboss-app.xml" href="examples/generating-jboss-app.html"/>
      <item name="Customize file name mapping" href="examples/customize-file-name-mapping.html"/>
      <item name="Generating modules ID" href="examples/generating-modules-id.html"/>
      <item name="Using JavaEE application clients" href="examples/using-app-client.html"/>
      <item name="Eclipse and Maven Integration" href="examples/eclipse-and-maven-integration.html"/>
    </menu>
  </body>
</project>
