<?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.8.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 http://maven.apache.org/xsd/decoration-1.8.0.xsd"
  name="Artifact Resolver">
  <edit>${project.scm.url}</edit>
  <body>
    <menu name="Overview">
      <item name="Introduction" href="index.html"/>
      <item name="API Compatibility" href="api-compatibility.html"/>
      <item name="Configuration" href="configuration.html"/>
      <item name="About Checksums" href="about-checksums.html"/>
      <item name="Expected Checksums" href="expected-checksums.html"/>
      <item name="About Local Repository" href="local-repository.html"/>
      <item name="Remote Repository Filtering" href="remote-repository-filtering.html"/>
      <item name="Third-party Integrations" href="third-party-integrations.html"/>
      <item name="Common Misconceptions" href="common-misconceptions.html"/>
      <item name="Upgrading Resolver" href="upgrading-resolver.html"/>
      <item name="JavaDocs" href="apidocs/index.html"/>
      <item name="Source Xref" href="xref/index.html"/>
      <!--item name="FAQ" href="faq.html"/-->
      <item name="License" href="https://www.apache.org/licenses/"/>
      <item name="Download" href="download.html"/>
    </menu>
    <menu name="See Also">
      <item name="Maven Artifact Resolver Ant Tasks" href="https://maven.apache.org/resolver-ant-tasks/"/>
      <item name="Aether wiki" href="https://wiki.eclipse.org/Aether"/>
    </menu>

    <menu ref="modules"/>
    <menu ref="reports"/>
  </body>
</project>
