<?xml version="1.0" encoding="UTF-8"?>
<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.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
  </parent>

  <groupId>de.scrum-master</groupId>
  <artifactId>test-bom</artifactId>
  <version>1.4.2</version>
  <packaging>pom</packaging>

  <name>Test dependency BoM</name>
  <description>
    Maven BoM (Bill of Materials) defining dependency versions for
    JUnit, Spock, Geb, Selenium + web drivers, web driver manager by bonigarcia.

    Please import this artifact with type=pom, scope=import from the dependencyManagement section of your project.

    In order to also get the dependencies themselves plus basic configuration like GebConfig, please also add
    the dependency de.scrum-master:test-resources with scope=test to your project.
  </description>
  <url>https://github.com/kriegaex/MavenTestBom</url>

  <organization>
    <name>Scrum-Master.de - Agile Project Management</name>
    <url>https://scrum-master.de</url>
  </organization>

  <licenses>
    <license>
      <name>GNU General Public License (GPL) version 3.0</name>
      <url>http://www.gnu.org/licenses/gpl-3.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Alexander Kriegisch</name>
      <organization>Scrum-Master.de</organization>
      <organizationUrl>https://scrum-master.de</organizationUrl>
    </developer>
  </developers>

  <scm>
    <url>https://github.com/kriegaex/MavenTestBom</url>
    <connection>scm:git:https://github.com/kriegaex/MavenTestBom.git</connection>
    <developerConnection>scm:git:git@github.com:kriegaex/MavenTestBom.git</developerConnection>
  </scm>

  <properties>
    <!-- If you want to build from an IDE like IDEA or Eclipse and use GnuPG version >= v2.0,
    set the parameter to true in order to get a nice GUI dialog for entering the passphrase.
    If you want to build from a console, set it to false or override it via -DgpgGuiPassphrase=false. -->
    <gpgGuiPassphrase>false</gpgGuiPassphrase>

    <!-- If you have multiple GnuPG signing keys on your keyring, the first one is used as the default key.
    In order to use another one, specify the desired key ID here, otherwise you may just leave the parameter
    empty or override it via -DgpgKeyId=. It does not hurt to always specify it, though. -->
    <gpgKeyId>70CC1444</gpgKeyId>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <!-- Maven Compiler Plugin -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <!-- JUnit, Spock, Geb, Selenium -->
    <version.junit>4.13.2</version.junit>
    <version.spock>1.3-groovy-2.5</version.spock>
    <version.groovy>2.5.14</version.groovy>

    <!-- Geb, Selenium -->
    <version.geb>3.0.1</version.geb>
    <version.selenium>3.14.0</version.selenium>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!-- JUnit -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${version.junit}</version>
        <scope>test</scope>
      </dependency>
      <!-- Groovy + Spock -->
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <scope>test</scope>
        <version>${version.groovy}</version>
        <type>pom</type>
        <exclusions>
          <!-- Make sure Spock does not use JUnit 5 runner (but JUnit 4) -->
          <exclusion>
              <groupId>org.codehaus.groovy</groupId>
              <artifactId>groovy-test-junit5</artifactId>
          </exclusion>
          <!-- Make sure Spock does not use TestNG runner -->
          <exclusion>
              <groupId>org.codehaus.groovy</groupId>
              <artifactId>groovy-testng</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>${version.spock}</version>
        <scope>test</scope>
      </dependency>
      <!-- Mock classes (in addition to interfaces) in Spock -->
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>3.3.0</version>
        <scope>test</scope>
      </dependency>
      <!-- Other test dependencies like Appium might depend on this one -->
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.3.0</version>
        <scope>test</scope>
      </dependency>
      <!-- Mock final classes and classes without default constructors in Spock -->
      <dependency>
        <groupId>org.objenesis</groupId>
        <artifactId>objenesis</artifactId>
        <version>2.5.1</version>
        <scope>test</scope>
      </dependency>
      <!-- Geb is used for web UI testing in connection with Spock -->
      <dependency>
        <groupId>org.gebish</groupId>
        <artifactId>geb-spock</artifactId>
        <version>${version.geb}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.gebish</groupId>
        <artifactId>geb-core</artifactId>
        <version>${version.geb}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.gebish</groupId>
        <artifactId>geb-implicit-assertions</artifactId>
        <version>${version.geb}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-firefox-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-ie-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-edge-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-opera-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-remote-driver</artifactId>
        <version>${version.selenium}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.7</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>htmlunit-driver</artifactId>
        <version>2.36.0</version>
        <scope>test</scope>
      </dependency>
      <!-- HtmlUnit 2.36.0 needs this -->
      <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-client</artifactId>
        <version>9.4.20.v20190813</version>
      </dependency>
      <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.0.3</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <profiles>
    <profile>
      <id>sonatype-oss-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.4</version>
            <configuration>
              <useAgent>${gpgGuiPassphrase}</useAgent>
              <keyname>${gpgKeyId}</keyname>
            </configuration>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.8</version>
            <extensions>true</extensions>
            <configuration>
              <serverId>ossrh</serverId>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <autoReleaseAfterClose>true</autoReleaseAfterClose>
            </configuration>
            <dependencies>
              <!--
                Plugin version 1.6.8 does not work on JDK 16+ without special MAVEN_OPTS opening certain modules,
                because the XStream version used needs it. One workaround is to use a more recent XStream version.
                TODO: remove plugin dependency after OSSRH-66257, NEXUS-26993 are fixed.
              -->
              <dependency>
                <groupId>com.thoughtworks.xstream</groupId>
                <artifactId>xstream</artifactId>
                <version>1.4.15</version>
              </dependency>
            </dependencies>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.4.1</version>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

</project>
