<?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 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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>maven</artifactId>
    <groupId>org.apache.maven</groupId>
    <version>2.2.2-RC1-SNAPSHOT</version>
  </parent>
  <artifactId>maven-core-it-runner</artifactId>

  <name>Integration Test Executor</name>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/maven-2/branches/maven-2.2.x/maven-core-it-runner</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/maven-2/branches/maven-2.2.x/maven-core-it-runner</developerConnection>
    <url>http://svn.apache.org/viewvc/maven/maven-2/branches/maven-2.2.x/maven-core-it-runner</url>
  </scm>

  <repositories>
    <repository>
      <id>test-plugins</id>
      <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>apache-maven</artifactId>
      <version>${project.version}</version>
      <classifier>bin</classifier>
      <type>tar.gz</type>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.its</groupId>
      <artifactId>core-it-suite</artifactId>
      <version>2.1-SNAPSHOT</version>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.maven</groupId>
                  <artifactId>apache-maven</artifactId>
                  <version>${project.version}</version>
                  <classifier>bin</classifier>
                  <type>tar.gz</type>
                </artifactItem>
              </artifactItems>
              <outputDirectory>target/maven-installation</outputDirectory>
            </configuration>
            <goals>
              <goal>unpack</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <configuration>
              <tasks>
                <chmod file="${basedir}/target/maven-installation/apache-maven-${pom.version}/bin/mvn" perm="755"/>
              </tasks>
            </configuration>
            <phase>process-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>no-local-repo-defined</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.3</version>
            <configuration>
              <systemProperties>
                <property>
                  <name>maven.home</name>
                  <value>${basedir}/target/maven-installation/apache-maven-${project.version}</value>
                </property>
                <property>
                  <name>maven.test.tmpdir</name>
                  <value>${basedir}/target/it-working-folder</value>
                </property>
              </systemProperties>
              <includes>
                <include>**/Suite.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
    <!--this profile is activated if maven.repo.local is defined and passes it to surefire-->
      <id>local-repo-defined</id>
      <activation>
        <property>
          <name>maven.repo.local</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.3</version>
            <configuration>
              <systemProperties>
                <property>
                  <name>maven.home</name>
                  <value>${basedir}/target/maven-installation/apache-maven-${project.version}</value>
                </property>
                <property>
                  <name>maven.test.tmpdir</name>
                  <value>${basedir}/target/it-working-folder</value>
                </property>
                <property>
                  <name>maven.repo.local</name>
                  <value>${maven.repo.local}</value>
                </property>
              </systemProperties>
              <includes>
                <include>**/Suite.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
