<?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.
-->
<project>
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.maven.its.mng4026</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <groupId>org.apache.maven.its.mng4026</groupId>
  <artifactId>consumer</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>Maven Integration Test :: MNG-4026 :: Consumer</name>
  <description>Verify that the project class path is properly ordered during a reactor build, i.e. when dependencies are
    resolved as active project artifacts from the reactor.</description>

  <dependencies>
    <!-- NOTE: The dependencies are intentionally not in alpha order -->
    <dependency>
      <groupId>org.apache.maven.its.mng4026</groupId>
      <artifactId>dep-1</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.its.mng4026</groupId>
      <artifactId>dep-3</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.its.mng4026</groupId>
      <artifactId>dep-2</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.its.mng4026</groupId>
      <artifactId>dep-4</artifactId>
      <version>1.0-SNAPSHOT</version>
    </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-1</id>
            <goals>
              <goal>runtime</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <runtimeClassPath>target/classpath-1.txt</runtimeClassPath>
              <significantPathLevels>2</significantPathLevels>
            </configuration>
          </execution>
          <execution>
            <!--
            NOTE: This second execution is essential part of the test to check caching/re-resolution effects and
            things like. After all, dependency resolution should be reproducible.
            -->
            <id>test-2</id>
            <goals>
              <goal>runtime</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <runtimeClassPath>target/classpath-2.txt</runtimeClassPath>
              <significantPathLevels>2</significantPathLevels>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <outputDirectory>classes</outputDirectory>
  </build>
</project>
