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

<settings>
  <profiles>
    <profile>
      <id>maven-core-it-repo</id>
      <repositories>
        <repository>
          <id>maven-core-it-ext</id>
          <url>http://maven.apache.org/null</url>
          <releases>
            <checksumPolicy>ignore</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>maven-core-it-repo</activeProfile>
  </activeProfiles>

  <mirrors>
    <!--
    NOTE: The tests are designed to detect mirror failures by artifact resolution failures. Since each project knows
    central via the super POM, we need to make sure the test-mirror does not match central so that fallback lookups
    from central fail, too.
    -->
    <mirror>
      <id>central</id>
      <url>@baseurl@/null</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>test-mirror</id>
      <url>@baseurl@/../repo</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
</settings>
