<?xml version="1.0"?>

<!--
/*
 * 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>

  <properties>
    <title>Introduction</title>
    <author email="hboutemy_AT_apache_DOT_org">Hervé Boutemy</author>
  </properties>

  <body>

    <section name="Apache Maven Artifact Resolver">

      <p>Apache Maven Artifact Resolver is a library for working with artifact repositories and dependency resolution.</p>
      <p>Maven Artifact Resolver deals with the specification of local repository, remote repository, developer workspaces, artifact transports, and artifact resolution.</p>
      <p>It is expected to be extended by a concrete repository implementation, such as
        <a href="/ref/current/maven-resolver-provider/">Maven Artifact Resolver Provider</a> for Maven repositories
        or any other provider for other repository formats.
      </p>

      <p>
        <img src="images/maven-resolver-deps.png" width="792" height="441" border="0" usemap="#Maven_Resolver_dependencies" />
        <map name="Maven_Resolver_dependencies">
          <area shape="rect" coords="285,405,348,441" href="./maven-resolver-api/" />
          <area shape="rect" coords="286,335,349,370" href="./maven-resolver-spi/" />
          <area shape="rect" coords="375,335,437,370" href="./maven-resolver-util/" />
          <area shape="rect" coords="527,335,609,370" href="./maven-resolver-test-util/" />
          <area shape="rect" coords="285,180,348,215" href="./maven-resolver-impl/" />
          <area shape="rect" coords="353,230,459,286" href="./maven-resolver-connector-basic/" />
          <area shape="rect" coords="479,201,520,235" href="./maven-resolver-transport-file/" />
          <area shape="rect" coords="479,243,581,278" href="./maven-resolver-transport-classpath/" />
          <area shape="rect" coords="572,201,654,236" href="./maven-resolver-transport-wagon/" />
          <area shape="rect" coords="592,243,654,278" href="./maven-resolver-transport-http/" />
          <area shape="rect" coords="291,33,424,69"   href="./maven-resolver-demos/maven-resolver-demo-maven-plugin/" />
          <area shape="rect" coords="433,33,524,69"   href="./maven-resolver-demos/maven-resolver-demo-snippets/" />
          <area shape="rect" coords="279,1,537,78"    href="./maven-resolver-demos/" />
          <area shape="rect" coords="551,33,663,69"   href="/resolver-ant-tasks/" />
          <area shape="rect" coords="130,33,240,69"   href="/ref/current/maven-plugin-api/" />
          <area shape="rect" coords="19,117,199,153"  href="/ref/current/maven-resolver-provider/" />
          <area shape="rect" coords="114,180,257,215" href="/ref/current/maven-model-builder/" />
          <area shape="rect" coords="142,234,228,270" href="/ref/current/maven-model/" />
          <area shape="rect" coords="6,284,212,320"   href="/ref/current/maven-repository-metadata/" />
          <area shape="rect" coords="0,1,266,329"     href="/ref/current/" />
          <area shape="rect" coords="689,200,775,236" href="/wagon/" />
          <area shape="rect" coords="689,243,791,278" href="http://hc.apache.org/httpcomponents-client-ga/index.html" />
          <area shape="rect" coords="689,34,774,70"   href="http://ant.apache.org/" />
        </map>
      </p>

      <subsection name="See Also">
        <ul>
          <li><a href="/resolver-ant-tasks/">Maven Artifact Resolver Ant Tasks</a></li>
        </ul>
      </subsection>
    </section>

  </body>

</document>
