<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.maven.its.mng3415</groupId>
  <artifactId>project</artifactId>
  <version>1</version>

  <name>Maven Integration Test :: MNG-3415</name>
  <description>
    Test that failures to resolve the artifact metadata are properly handled. In particular, we need to distinguish
    between a network failure and a missing metadata file in the remote repo. After a network failure, we immediately
    want to retry the remote repo during the next build, regardless of the repo's update policy. In case the metadata
    (and hence the corresponding artifact) is simply missing from the repo, we don't want to recheck this repo on each
    build but wait until the update interval has elapsed (see also MNG-2712).
  </description>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven.its.mng3415</groupId>
      <artifactId>missing</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>pom</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.its.plugins</groupId>
        <artifactId>maven-it-plugin-dependency-resolution</artifactId>
        <version>2.1-SNAPSHOT</version>
        <executions>
          <execution>
            <id>test</id>
            <phase>validate</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
