<?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.
 */
 -->
<document xmlns="http://maven.apache.org/DOCUMENT/1.0.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DOCUMENT/1.0.1 http://maven.apache.org/xsd/document-1.0.1.xsd"
  outputName="apache-maven">

  <meta>
    <title>Apache Maven</title>
    <author>The Apache Maven Project</author>
    <keyWords>
      <keyWord>Java build system</keyWord>
      <keyWord>automated software build </keyWord>
      <keyWord>software project management</keyWord>
      <keyWord>dependency management</keyWord>
      <keyWord>project object model POM</keyWord>
    </keyWords>
    <description>Apache Maven is a software project management and comprehension tool. Based on
      the concept of a project object model (POM), Maven can manage a project's build,
      reporting and documentation from a central piece of information.</description>
  </meta>

  <toc name="Table of Contents">
    <!-- About -->
    <item name="What is Maven?" ref="what-is-maven.html"/>
    <item name="Features" ref="maven-features.html"/>
    <item name="FAQ" ref="general.html"/>

    <!-- Community -->
    <item name="Community Overview" ref="/community.html">
      <item name="How to Contribute" ref="/guides/development/guide-helping.html"/>
      <item name="Getting Help" ref="/users/getting-help.html" />
      <item name="Issue Management" ref="/issue-management.html" />
      <item name="Source Repository" ref="/scm.html" />
      <item name="CI Management" ref="/ci-management.html"/>
    </item>

    <!-- Generic Documentation -->
    <item name="Running Maven" ref="/run-maven/index.html" />
    <item name="Maven Plugins" ref="/plugins/index.html" />

    <!-- User Documentation -->
    <item name="User Centre" ref="/users/index.html">
      <item name="Maven in 5 Minutes" ref="/guides/getting-started/maven-in-five-minutes.html" />
      <item name="Getting Started Guide" ref="/guides/getting-started/index.html" />
      <item name="POM Reference" ref="/pom.html" />
      <item name="Settings Reference" ref="/settings.html" />

      <item name="Guides" ref="/guides/index.html">
        <item name="The Build Lifecycle" ref="/guides/introduction/introduction-to-the-lifecycle.html" />
        <item name="The POM" ref="/guides/introduction/introduction-to-the-pom.html" />
        <item name="Profiles" ref="/guides/introduction/introduction-to-profiles.html" />
        <item name="Repositories" ref="/guides/introduction/introduction-to-repositories.html" />
        <item name="Standard Directory Layout" ref="/guides/introduction/introduction-to-the-standard-directory-layout.html" />
        <item name="The Dependency Mechanism" ref="/guides/introduction/introduction-to-dependency-mechanism.html" />

        <item name="Plugin Development" ref="/guides/introduction/introduction-to-plugins.html" />
        <item name="Configuring Plug-ins" ref="/guides/mini/guide-configuring-plugins.html" />
        <item name="The Plugin Registry" ref="/guides/introduction/introduction-to-plugin-registry.html" />
        <item name="Plugin Prefix Resolution" ref="/guides/introduction/introduction-to-plugin-prefix-mapping.html" />
        <item name="Developing Ant Plugins" ref="/guides/plugin/guide-ant-plugin-development.html" />
        <item name="Developing Java Plugins" ref="/guides/plugin/guide-java-plugin-development.html" />

        <item name="Creating a Site" ref="/guides/mini/guide-site.html" />
        <item name="Snippet Macro" ref="/guides/mini/guide-snippet-macro.html" />

        <item name="What is an Archetype" ref="/guides/introduction/introduction-to-archetypes.html" />
        <item name="Creating Archetypes" ref="/guides/mini/guide-creating-archetypes.html" />

        <item name="Relocation of Artifacts" ref="/guides/mini/guide-relocation.html" />

        <item name="Installing 3rd party JARs to Local Repository" ref="/guides/mini/guide-3rd-party-jars-local.html" />
        <item name="Deploying 3rd party JARs to Remote Repository" ref="/guides/mini/guide-3rd-party-jars-remote.html" />
        <item name="Coping with Sun JARs" ref="/guides/mini/guide-coping-with-sun-jars.html" />
        <item name="Remote repository access through authenticated HTTPS" ref="/guides/mini/guide-repository-ssl.html" />

        <item name="Creating Assemblies" ref="/guides/mini/guide-assemblies.html" />
        <item name="Configuring Archive Plugins" ref="/guides/mini/guide-archive-configuration.html" />
        <item name="Configuring Maven" ref="/guides/mini/guide-configuring-maven.html" />
        <item name="Mirror Settings" ref="/guides/mini/guide-mirror-settings.html" />
        <item name="Deployment and Security Settings" ref="/guides/mini/guide-deployment-security-settings.html" />
        <item name="Generating Sources" ref="/guides/mini/guide-generating-sources.html" />
        <item name="Working with Manifests" ref="/guides/mini/guide-manifest.html" />
        <item name="Maven Classloading" ref="/guides/mini/guide-maven-classloading.html" />
        <item name="Using Multiple Modules in a Build" ref="/guides/mini/guide-multiple-modules.html" />
        <item name="Using Multiple Repositories" ref="/guides/mini/guide-multiple-repositories.html" />
        <item name="Using Proxies" ref="/guides/mini/guide-proxies.html" />
        <item name="Using the Release Plugin" ref="/guides/mini/guide-releasing.html" />
        <item name="Using Ant with Maven" ref="/guides/mini/guide-using-ant.html" />
        <item name="Using Modello" ref="/guides/mini/guide-using-modello.html" />
        <item name="Using Extensions" ref="/guides/mini/guide-using-extensions.html" />
        <item name="Building For Different Environments with Maven" ref="/guides/mini/guide-building-for-different-environments.html" />
        <item name="Using Toolchains" ref="/guides/mini/guide-using-toolchains.html" />
        <item name="Encrypting passwords in settings.xml" ref="/guides/mini/guide-encryption.html" />

        <item name="Reusable Test JARs" ref="/guides/mini/guide-attached-tests.html" />
      </item>

    </item>

    <!-- Plugin Dev Documentation -->
    <item name="Plugin Developer Centre" ref="/plugin-developers/index.html">
      <item name="Testing your Plugin" ref="/plugin-developers/plugin-testing.html" />
      <item name="Documenting your Plugin" ref="/plugin-developers/plugin-documenting.html" />
      <item name="Common Bugs and Pitfalls" ref="/plugin-developers/common-bugs.html"/>
      <item name="Mojo API" ref="/developers/mojo-api-specification.html" />
    </item>

    <!-- Repository Documentation -->
    <item name="Maven Repository Centre" ref="/repository/index.html">
      <item name="Guide to Maven Evangelism" ref="/guides/mini/guide-maven-evangelism.html"/>
      <item name="Guide to uploading artifacts" ref="/guides/mini/guide-central-repository-upload.html"/>
    </item>

    <!-- Dev Documentation -->
    <item name="Maven Developer Centre" ref="/developers/index.html">
      <item name="Developing Maven" ref="/guides/development/guide-maven-development.html"/>
      <item name="Building Maven" ref="/guides/development/guide-building-maven.html"/>

      <!-- Committer -->
      <item name="Committer Environment" ref="/developers/committer-environment.html"/>
      <item name="Committer Settings" ref="/developers/committer-settings.html"/>
      <item name="Maven Code Style And Conventions" ref="/developers/conventions/code.html"/>
      <item name="Maven JIRA Convention" ref="/developers/conventions/jira.html"/>
      <item name="Making GPG Keys" ref="/developers/release/pmc-gpg-keys.html"/>
      <item name="Release Process" ref="/developers/release/releasing.html"/>
      <item name="Deploy Maven Current References" ref="/developers/website/deploy-maven-current-ref.html"/>
    </item>

    <!-- External -->
    <item name="External Resources" ref="/articles.html" />
  </toc>

  <cover>
    <coverTitle>Apache Maven</coverTitle>
    <coverSubTitle>Current version</coverSubTitle>
    <coverType>User Guide</coverType>
    <projectName>${project.name}</projectName>
    <projectLogo>https://maven.apache.org/images/maventxt_logo_200.gif</projectLogo>
    <companyName>The Apache Software Foundation</companyName>
    <companyLogo>https://www.apache.org/images/asf_logo_wide.png</companyLogo>
  </cover>
</document>
