<?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.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/SETTINGS/1.0.0" targetNamespace="http://maven.apache.org/SETTINGS/1.0.0">
  <xs:element name="settings" type="Settings">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">
        Root element of the user configuration file.
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Settings">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">
        Root element of the user configuration file.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="localRepository" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The local repository.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="interactiveMode" type="xs:boolean" default="true">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Whether Maven should attempt to interact with the user for input.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="usePluginRegistry" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Whether Maven should use the plugin-registry.xml file to manage plugin versions.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="offline" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Indicate whether maven should operate in offline mode full-time.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="proxies">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Configuration for different proxy profiles. Multiple proxy profiles
            might come in handy for anyone working from a notebook or other
            mobile platform, to enable easy switching of entire proxy
            configurations by simply specifying the profile id, again either from
            the command line or from the defaults section below.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="proxy" minOccurs="0" maxOccurs="unbounded" type="Proxy"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="servers">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Configuration of server-specific settings, mainly authentication
            method. This allows configuration of authentication on a per-server
            basis.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="server" minOccurs="0" maxOccurs="unbounded" type="Server"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="mirrors">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            Configuration of download mirrors for repositories.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="mirror" minOccurs="0" maxOccurs="unbounded" type="Mirror"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="profiles">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Configuration of build profiles for adjusting the build
            according to environmental parameters.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="profile" minOccurs="0" maxOccurs="unbounded" type="Profile"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="activeProfiles">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            List of manually-activated build profiles, specified in the order in which
            they should be applied.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="activeProfile" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="pluginGroups">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            List of groupIds to search for a plugin when that plugin
            groupId is not explicitly provided.
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="pluginGroup" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Mirror">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">
        A download mirror for a given repository.
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="mirrorOf" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The server ID of the repository being mirrored, eg
            &quot;central&quot;. This MUST NOT match the mirror id.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The optional name that describes the mirror.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="url" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">The URL of the mirror repository.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="id" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Proxy">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        The &lt;code&gt;&amp;lt;proxy&amp;gt;&lt;/code&gt; element contains informations required to a proxy settings.
        </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="active" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Whether this proxy configuration is the active one.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="protocol" type="xs:string" default="http">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The proxy protocol.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="username" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The proxy user.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="password" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The proxy password.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="port" type="xs:int" default="8080">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The proxy port.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="host" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The proxy host.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="nonProxyHosts" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The list of non-proxied hosts (delimited by |).

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="id" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Server">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        The &lt;code&gt;&amp;lt;server&amp;gt;&lt;/code&gt; element contains informations required to a server settings.
        </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="username" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The username used to authenticate.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="password" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The password used in conjunction with the username to authenticate.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="privateKey" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The private key location used to authenticate.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="passphrase" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The passphrase used in conjunction with the privateKey to authenticate.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="filePermissions" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The permissions for files when they are created.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="directoryPermissions" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The permissions for directories when they are created.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="configuration">
        <xs:annotation>
          <xs:documentation source="version">0.0.0+</xs:documentation>
          <xs:documentation source="description">

            Extra configuration for the transport layer.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="id" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Profile">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        Modifications to the build process which is keyed on some
        sort of environmental parameter.

      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="activation" type="Activation">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The conditional logic which will automatically
            trigger the inclusion of this profile.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="properties">
        <xs:annotation>
          <xs:documentation source="version">0.0.0+</xs:documentation>
          <xs:documentation source="description">
            Extended configuration specific to this profile goes here.
            Contents take the form of
            &lt;property.name&gt;property.value&lt;/property.name&gt;
          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="repositories">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The lists of the remote repositories.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="repository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="pluginRepositories">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The lists of the remote repositories for discovering plugins.

          </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="pluginRepository" minOccurs="0" maxOccurs="unbounded" type="Repository"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="id" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Repository">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">
        Repository contains the information needed for establishing
        connections with remote repoistory
      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="releases" type="RepositoryPolicy">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            How to handle downloading of releases from this repository
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="snapshots" type="RepositoryPolicy">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            How to handle downloading of snapshots from this repository
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="id" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            A unique identifier for a repository.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Human readable name of the repository.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="url" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            The url of the repository.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="layout" type="xs:string" default="default">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The type of layout this repository uses for locating and
            storing artifacts - can be &quot;legacy&quot; or &quot;default&quot;.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="RepositoryPolicy">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">Download policy</xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="enabled" type="xs:boolean" default="true">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            Whether to use this repository for downloading this type of
            artifact.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="updatePolicy" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The frequency for downloading updates - can be &quot;always&quot;,
            &quot;daily&quot; (default), &quot;interval:XXX&quot; (in minutes) or &quot;never&quot;
            (only if it doesn&apos;t exist locally).
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="checksumPolicy" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            What to do when verification of an artifact checksum fails -
            warn, fail, etc. Valid values are &quot;fail&quot; or &quot;warn&quot;.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="Activation">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        The conditions within the build runtime environment which will trigger
        the automatic inclusion of the parent build profile.

      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="activeByDefault" type="xs:boolean" default="false">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            Flag specifying whether this profile is active as a default.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="jdk" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Specifies that this profile will be activated when a matching JDK is detected.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="os" type="ActivationOS">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Specifies that this profile will be activated when matching OS attributes are detected.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="property" type="ActivationProperty">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Specifies that this profile will be activated when this System property is specified.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="file" type="ActivationFile">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">

            Specifies that this profile will be activated based on existence of a file.

          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="ActivationFile">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        This is the file specification used to activate a profile. The missing value will be a the location
        of a file that needs to exist, and if it doesn&apos;t the profile must run.  On the other hand exists will test
        for the existence of the file and if it is there will run the profile.

      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="missing" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The name of the file that should be missing to activate a
            profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="exists" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The name of the file that should exist to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="ActivationOS">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        This is an activator which will detect an operating system&apos;s attributes in order to activate
        its profile.

      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The name of the OS to be used to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="family" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The general family of the OS to be used to activate a
            profile (e.g. &apos;windows&apos;)
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="arch" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The architecture of the OS to be used to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="version" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The version of the OS to be used to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="ActivationProperty">
    <xs:annotation>
      <xs:documentation source="version">1.0.0</xs:documentation>
      <xs:documentation source="description">

        This is the property specification used to activate a profile. If the value field is empty,
        then the existence of the named property will activate the profile, otherwise it does a case-sensitive
        match against the property value as well.

      </xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element minOccurs="0" name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The name of the property to be used to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="value" type="xs:string">
        <xs:annotation>
          <xs:documentation source="version">1.0.0</xs:documentation>
          <xs:documentation source="description">
            The value of the property to be used to activate a profile.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
  </xs:complexType>
</xs:schema>