<!--
  ~ 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-parent</artifactId>
    <groupId>org.apache.maven</groupId>
    <version>33</version>
  </parent>

  <groupId>org.apache.maven.surefire</groupId>
  <artifactId>surefire</artifactId>
  <version>2.22.2</version>
  <packaging>pom</packaging>

  <name>Apache Maven Surefire</name>
  <description>Surefire is a test framework project.
    This is the aggregator POM in Apache Maven Surefire project.</description>
  <url>https://maven.apache.org/surefire/</url>
  <inceptionYear>2004</inceptionYear>

  <contributors>
    <contributor>
      <name>Jesse Kuhnert</name>
    </contributor>
    <contributor>
      <name>Marvin Froeder</name>
      <email>marvin@marvinformatics.com</email>
    </contributor>
  </contributors>

  <modules>
    <module>surefire-logger-api</module>
    <module>surefire-api</module>
    <module>surefire-shadefire</module>
    <module>surefire-booter</module>
    <module>surefire-grouper</module>
    <module>surefire-providers</module>
    <module>maven-surefire-common</module>
    <module>surefire-report-parser</module>
    <module>maven-surefire-plugin</module>
    <module>maven-failsafe-plugin</module>
    <module>maven-surefire-report-plugin</module>
    <module>surefire-its</module>
  </modules>

  <scm>
    <connection>${maven.surefire.scm.devConnection}</connection>
    <developerConnection>${maven.surefire.scm.devConnection}</developerConnection>
    <url>https://github.com/apache/maven-surefire/tree/${project.scm.tag}</url>
    <tag>surefire-2.22.2</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/SUREFIRE</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://builds.apache.org/job/maven-box/job/maven-surefire</url>
  </ciManagement>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/asf/maven/website/components/${maven.site.path}</url>
    </site>
  </distributionManagement>

  <properties>
    <mavenVersion>2.2.1</mavenVersion>
    <!-- <shadedVersion>2.12.4</shadedVersion> commented out due to https://issues.apache.org/jira/browse/MRELEASE-799 -->
    <commonsLang3Version>3.5</commonsLang3Version>
    <commonsIoVersion>2.5</commonsIoVersion>
    <mavenSharedUtilsVersion>0.9</mavenSharedUtilsVersion>
    <powermockVersion>2.0.0-beta.5</powermockVersion>
    <maven.surefire.scm.devConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-surefire.git</maven.surefire.scm.devConnection>
    <maven.site.path>surefire-archives/surefire-LATEST</maven.site.path>
    <!-- Override with Jigsaw JRE 9 -->
    <jdk.home>${java.home}/..</jdk.home>
    <maven.compiler.testSource>1.${javaVersion}</maven.compiler.testSource>
    <maven.compiler.testTarget>1.${javaVersion}</maven.compiler.testTarget>
    <jvm.args.tests>-server -XX:+UseG1GC -Xms128m -Xmx144m -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:SoftRefLRUPolicyMSPerMB=50 -Djava.awt.headless=true</jvm.args.tests>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commonsLang3Version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commonsIoVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-booter</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-logger-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-grouper</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>maven-surefire-common</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.reporting</groupId>
        <artifactId>maven-reporting-api</artifactId>
        <version>3.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>${mavenVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-file</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-webdav</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-http-lightweight</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh-external</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-sink-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-interactivity-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>${mavenPluginToolsVersion}</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-artifact</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-descriptor</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-project</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-model</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-toolchain</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-settings</artifactId>
        <version>${mavenVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-shared-utils</artifactId>
        <version>${mavenSharedUtilsVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-common-artifact-filters</artifactId>
        <version>1.3</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-plugin-testing-harness</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>1.13</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-verifier</artifactId>
        <version>1.6</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-java</artifactId>
        <version>0.9.10</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>2.21.0</version>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- PowerMock@Java9 and Java11
      org.powermock for java9, see https://github.com/powermock/powermock/issues/783
      These dependencies substitute org.powermock:powermock-mockito-release-full:jar:full:1.6.4 in java9.
      -->
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-core</artifactId>
        <version>${powermockVersion}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
          </exclusion>
          <exclusion>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>1.8.17</version>
      </dependency>
      <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>1.8.17</version>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${powermockVersion}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>
        <version>${powermockVersion}</version>
        <scope>test</scope>
      </dependency>
      <!-- END: PowerMock@Java9 -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert</artifactId>
        <version>1.4</version>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.9.1</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>2.0.3</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easytesting</groupId>
      <artifactId>fest-assert</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.12</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <executions>
            <execution>
              <id>compile-generated</id>
              <phase>process-sources</phase>
              <goals>
                <goal>compile</goal>
              </goals>
              <configuration>
                <includes>
                  <include>org/apache/maven/shared/utils/logging/*.java</include>
                  <include>HelpMojo.java</include>
                  <include>**/HelpMojo.java</include>
                  <include>org/apache/maven/plugin/failsafe/xmlsummary/*.java</include>
                </includes>
                <compilerArgs>
                  <!-- FIXME: maven-plugin-plugin therefore used -syntax or none due to HelpMojo -->
                  <arg>-Xdoclint:none</arg>
                </compilerArgs>
              </configuration>
            </execution>
            <execution>
              <id>default-compile</id>
              <phase>compile</phase>
              <goals>
                <goal>compile</goal>
              </goals>
              <configuration>
                <excludes>
                  <exclude>org/apache/maven/shared/utils/logging/*.java</exclude>
                  <exclude>HelpMojo.java</exclude>
                  <exclude>**/HelpMojo.java</exclude>
                  <exclude>org/apache/maven/plugin/failsafe/xmlsummary/*.java</exclude>
                </excludes>
                <compilerArgs>
                  <arg>-Xdoclint:all</arg>
                </compilerArgs>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <fork>true</fork>
            <compilerArgs>
              <arg>-Xdoclint:all</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <!-- NOTE: animal sniffer does not check test classes: https://jira.codehaus.org/browse/MANIMALSNIFFER-40 -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>animal-sniffer-maven-plugin</artifactId>
          <version>1.16</version>
          <executions>
            <execution>
              <id>signature-check</id>
              <goals>
                <goal>check</goal>
              </goals>
              <configuration>
                <signature>
                  <groupId>org.codehaus.mojo.signature</groupId>
                  <artifactId>java16</artifactId>
                  <version>1.1</version>
                </signature>
                <excludeDependencies>
                  <param>org.codehaus.plexus:plexus-java</param>
                  <param>org.ow2.asm:asm</param>
                </excludeDependencies>
                <ignores>
                  <param>org.objectweb.asm.*</param>
                  <param>org.codehaus.plexus.languages.java.jpms.*</param>
                </ignores>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.4</version> <!-- ${shadedVersion}, but resolved due to https://issues.apache.org/jira/browse/MRELEASE-799 -->
          <configuration>
            <!-- NOTE: Be sure to isolate the Surefire version under test from the version running the tests! -->
            <useSystemClassLoader>false</useSystemClassLoader>
            <argLine>${jvm.args.tests} ${jacoco.agent} -Dnet.bytebuddy.experimental=true</argLine>
            <useFile>false</useFile>
            <redirectTestOutputToFile>false</redirectTestOutputToFile>
            <jvm>${jdk.home}/bin/java</jvm>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <preparationGoals>clean install</preparationGoals>
            <commitByProject>false</commitByProject>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-plugin-plugin</artifactId>
          <configuration>
            <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-invoker-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>jacoco-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <propertyName>jacoco.agent</propertyName>
          <append>true</append>
          <inclNoLocationClasses>true</inclNoLocationClasses>
          <haltOnFailure>false</haltOnFailure>
          <jmx>false</jmx>
          <includes>
            <include>**/failsafe/*</include>
            <include>**/failsafe/**/*</include>
            <include>**/surefire/*</include>
            <include>**/surefire/**/*</include>
          </includes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M1</version>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <!-- We use JDK 1.8 to check -Xdoclint:all at compile time but with javac -source 1.6 -target 1.6 -->
                  <!-- enforcer:1.3.1 fails on jdk9. 3.0.0-M1 does not but surefire:12.2.4 crashes later. -->
                  <version>[1.8, 1.9)</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[3.1.0,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-bytecode-version</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${maven.compiler.target}</maxJdkVersion>
                  <excludes>
                    <exclude>org.codehaus.plexus:plexus-java</exclude>
                    <exclude>org.ow2.asm:asm</exclude>
                    <exclude>org.junit.platform:junit-platform-commons</exclude>
                  </excludes>
                </enforceBytecodeVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <fail>true</fail>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>rat-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <excludes combine.children="append">
                <exclude>Jenkinsfile</exclude>
                <exclude>README.md</exclude>
                <exclude>.gitignore</exclude>
                <exclude>.git/**/*</exclude>
                <exclude>**/.idea</exclude>
                <exclude>**/.svn/**/*</exclude>
                <exclude>**/*.iml</exclude>
                <exclude>**/*.ipr</exclude>
                <exclude>**/*.iws</exclude>
                <exclude>**/*.versionsBackup</exclude>
                <exclude>**/dependency-reduced-pom.xml</exclude>
                <exclude>.repository/**</exclude> <!-- jenkins with local maven repository -->
                <exclude>src/test/resources/**/*</exclude>
                <exclude>src/test/resources/**/*.css</exclude>
                <exclude>**/*.jj</exclude>
                <exclude>src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider
                </exclude>
                <exclude>DEPENDENCIES</exclude>
                <exclude>.m2/**</exclude>
                <exclude>.m2</exclude>
                <exclude>.travis.yml</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <deployAtEnd>true</deployAtEnd>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.12.4</version> <!-- ${shadedVersion}, but resolved due to https://issues.apache.org/jira/browse/MRELEASE-799 -->
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>reporting</id>
      <build>
        <pluginManagement>
          <plugins>
            <!-- Moving to a profile, since these dependencies won't exist the first
                 time a new snapshot version is built. This prevents the first
                 snapshot build from proceeding beyond the build for the top-level 
                 Surefire parent POM.
            -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-site-plugin</artifactId>
              <dependencies>
                <!-- dependency>
                  <groupId>org.apache.maven.surefire</groupId>
                  <artifactId>surefire-shadefire</artifactId>
                  <version>${project.version}</version>
                </dependency -->
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-changes-plugin</artifactId>
            <version>2.12.1</version>
            <configuration>
              <!-- For JIRA-report -->
              <columnNames>Type,Priority,Key,Summary,Resolution</columnNames>
              <onlyCurrentVersion>true</onlyCurrentVersion>
              <resolutionIds>Fixed</resolutionIds>
              <sortColumnNames>type DESC,Priority DESC,Key</sortColumnNames>
              <maxEntries>1000</maxEntries>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <id>m2e</id>
      <properties>
        <m2BuildDirectory>target</m2BuildDirectory>
      </properties>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <directory>${m2BuildDirectory}</directory>
        <plugins>
          <plugin>
            <groupId>org.maven.ide.eclipse</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>0.10.0</version>
            <configuration>
              <mappingId>customizable</mappingId>
              <configurators>
                <configurator id="org.maven.ide.eclipse.jdt.javaConfigurator" />
                <configurator id="org.maven.ide.eclipse.modello.modelloConfigurator" />
                <configurator id="org.maven.ide.eclipse.plexus.annotations.plexusConfigurator" />
              </configurators>
              <mojoExecutions>
                <mojoExecution>org.apache.maven.plugins:maven-resources-plugin::</mojoExecution>
              </mojoExecutions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
