<?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>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire</artifactId>
    <version>2.19.1</version>
  </parent>

  <artifactId>surefire-setup-integration-tests</artifactId>

  <name>Maven Surefire Integration Test Setup</name>
  <description>Creates internal M2 local repository in target/it-repo/. The project is not deployed.</description>

  <properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <it.settings.showPasswords>false</it.settings.showPasswords>
    <testng.version>5.7</testng.version>
    <surefire.threadcount>2</surefire.threadcount>
    <surefire.build.version>2.8</surefire.build.version>
  </properties>

  <dependencies>
    <dependency>
      <artifactId>maven-failsafe-plugin</artifactId>
      <groupId>org.apache.maven.plugins</groupId>
      <version>${project.version}</version>
      <type>maven-plugin</type>
    </dependency>
    <dependency>
      <artifactId>maven-surefire-report-plugin</artifactId>
      <groupId>org.apache.maven.plugins</groupId>
      <version>${project.version}</version>
      <type>maven-plugin</type>
    </dependency>
    <dependency>
      <artifactId>maven-surefire-plugin</artifactId>
      <groupId>org.apache.maven.plugins</groupId>
      <version>${project.version}</version>
      <type>maven-plugin</type>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-testng</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <!-- SC don't want our surefire getting confused and trying to use the testng runner -->
        <exclusion>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit3</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit4</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit47</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-settings</artifactId>
      <version>2.0.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.sourceforge.htmlunit</groupId>
      <artifactId>htmlunit</artifactId>
      <version>2.8</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.0.1</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-help-plugin</artifactId>
        <version>2.2</version>
        <executions>
          <execution>
            <id>settings.xml</id>
            <phase>generate-test-resources</phase>
            <goals>
              <goal>effective-settings</goal>
            </goals>
            <configuration>
              <output>${project.build.directory}/private/settings.xml</output>
              <showPasswords>${it.settings.showPasswords}</showPasswords>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>1.8</version>
        <configuration>
          <extraArtifacts>
            <extraArtifact>org.apache.maven.surefire:surefire-testng-utils:${project.version}</extraArtifact>
          </extraArtifacts>
          <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
          <extraArtifacts>
            <extraArtifact>org.testng:testng:4.7:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.0.2:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.1:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.5:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.6:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.7:jar:jdk14</extraArtifact>
            <extraArtifact>org.testng:testng:5.7:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.8:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.9:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.10:jar:jdk15</extraArtifact>
            <extraArtifact>org.testng:testng:5.12.1</extraArtifact>
            <extraArtifact>org.testng:testng:5.13</extraArtifact>
            <extraArtifact>org.testng:testng:5.13.1</extraArtifact>
            <extraArtifact>org.testng:testng:5.14</extraArtifact>
            <extraArtifact>org.testng:testng:5.14.1</extraArtifact>
            <extraArtifact>org.testng:testng:5.14.2</extraArtifact>
            <extraArtifact>org.testng:testng:5.14.9</extraArtifact>
            <extraArtifact>org.testng:testng:6.0</extraArtifact>
            <extraArtifact>org.testng:testng:6.5.1</extraArtifact>
            <extraArtifact>com.google.inject:guice:3.0:jar:no_aop</extraArtifact>
            <extraArtifact>log4j:log4j:1.2.16</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-clean-plugin:2.4.1</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-compiler-plugin:2.3.2</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-compiler-plugin:2.5.1</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-install-plugin:2.3.1</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-compiler-plugin:2.0.2</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-resources-plugin:2.5</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-jar-plugin:2.3.2</extraArtifact>
            <extraArtifact>org.apache.commons:commons-email:1.2</extraArtifact>
            <extraArtifact>org.codehaus.mojo:build-helper-maven-plugin:1.2</extraArtifact>
            <extraArtifact>org.apache.maven.reporting:maven-reporting-api:2.2.1</extraArtifact>
            <extraArtifact>commons-collections:commons-collections:3.2</extraArtifact>
            <extraArtifact>commons-logging:commons-logging:1.0.4</extraArtifact>
            <extraArtifact>xml-apis:xml-apis:1.0.b2</extraArtifact>
            <extraArtifact>org.apache.httpcomponents:httpclient:4.0.2</extraArtifact>
            <extraArtifact>junit:junit:4.4</extraArtifact>
            <extraArtifact>junit:junit:4.5</extraArtifact>
            <extraArtifact>junit:junit:4.7</extraArtifact>
            <extraArtifact>junit:junit:4.8.1</extraArtifact>
            <extraArtifact>junit:junit:4.8.2</extraArtifact>
            <extraArtifact>junit:junit:4.11</extraArtifact>
            <extraArtifact>junit:junit-dep:4.8</extraArtifact>
            <extraArtifact>junit:junit-dep:4.7</extraArtifact>
            <extraArtifact>junit:junit-dep:4.4</extraArtifact>
            <extraArtifact>org.apache.maven.plugins:maven-surefire-plugin:2.10</extraArtifact>
            <extraArtifact>org.apache.maven.surefire:surefire-junit3:2.10</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-utils:1.0.4</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-utils:1.4.1</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-utils:1.5.1</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-utils:1.5.8</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-utils:1.5.15</extraArtifact>
            <extraArtifact>org.mockito:mockito-core:1.8.5</extraArtifact>
            <extraArtifact>org.codehaus.plexus:plexus-interpolation:1.12</extraArtifact>
          </extraArtifacts>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>install</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!--test>**/SetUpForIntegrationTest</test-->
          <!-- Pass current surefire version to the main suite so that it -->
          <!-- can forward to all integration test projects. SUREFIRE-513 -->
          <systemPropertyVariables>
            <surefire.version>${project.version}</surefire.version>
            <testng.version>${testng.version}</testng.version>
            <maven.home>${maven.home}</maven.home>
            <maven.settings.file>${project.build.directory}/private/settings.xml</maven.settings.file>
            <maven.staged.local.repo>${project.build.directory}/it-repo</maven.staged.local.repo>
          </systemPropertyVariables>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-shadefire</artifactId>
            <version>2.12.4</version> <!-- ${shadedVersion}, but resolved due to http://jira.codehaus.org/browse/MRELEASE-799 -->
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>require-maven-2.1.0</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <!-- Some plugin features require a recent Maven runtime to work (e.g. SystemPropertiesTest) -->
                  <version>[2.1.0,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
