<?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.17</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <groupId>org.apache.maven.surefire</groupId>
  <artifactId>surefire-setup-integration-tests</artifactId>

  <name>Maven Surefire Integration Test Setup</name>

  <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.shared</groupId>
      <artifactId>maven-verifier</artifactId>
      <version>1.3</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.1</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.0.9</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>${shadedVersion}</version>
          </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-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
