<?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.
-->

<!--
These settings are meant for ITs that download artifacts from remote servers. In general, ITs should use stub
plugins/artifacts from test repos so use of these settings should be the exceptional case, not the default.
-->

<settings>
  <proxies>
    <proxy>
      <id>it-proxy</id>
      <active>${proxy.active}</active>
      <protocol>${proxy.type}</protocol>
      <host>${proxy.host}</host>
      <port>${proxy.port}</port>
      <username>${proxy.user}</username>
      <password>${proxy.pass}</password>
      <nonProxyHosts>${proxy.nonProxyHosts}</nonProxyHosts>
    </proxy>
  </proxies>
  <profiles>
    <profile>
      <id>it-defaults</id>
      <repositories>
        <repository>
          <id>central</id>
          <name>Apache Maven Integration Testing Repository</name>
          <url>${maven.it.central}</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <name>Apache Maven Integration Testing Repository</name>
          <url>${maven.it.central}</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>it-defaults</activeProfile>
  </activeProfiles>
</settings>
