<?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/maven-v4_0_0.xsd">

  <!-- Parent -->
  <parent>
    <groupId>org.jboss</groupId>
    <artifactId>jboss-parent</artifactId>
    <version>47</version>
  </parent>

  <!-- Model Version -->
  <modelVersion>4.0.0</modelVersion>

  <!-- Artifact Configuration -->
  <groupId>org.arquillian.cube</groupId>
  <artifactId>arquillian-cube-parent</artifactId>
  <version>2.1.0.Alpha2</version>
  <packaging>pom</packaging>

  <name>Arquillian Cube Extension</name>
  <url>http://arquillian.org</url>
  <description>Arquillian Cube Extension to integrate Arquillian to Docker</description>

  <modules>
    <module>api</module>
    <module>spi</module>
    <module>core</module>
    <module>containerless</module>
    <module>docker</module>
    <module>openshift</module>
    <module>kubernetes</module>
    <module>requirement</module>
    <module>bom</module>
    <module>requirement-spi</module>
    <module>arquillian-cube-docker-starter</module>
    <module>arquillian-cube-kubernetes-starter</module>
    <module>arquillian-cube-openshift-starter</module>
    <module>jkube-maven-plugin-build</module>
    <!-- build modules -->
    <module>build</module>
  </modules>

  <developers>
    <developer>
      <id>arquillian.org</id>
      <name>Arquillian Community</name>
      <organization>arquillian.org</organization>
      <organizationUrl>http://arquillian.org</organizationUrl>
    </developer>
  </developers>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:git://git@github.com:arquillian/arquillian-cube.git</connection>
    <developerConnection>scm:git:ssh://github.com/arquillian/arquillian-cube.git</developerConnection>
    <url>git://github.com/arquillian/arquillian-cube.git</url>
    <tag>v2.1.0.Alpha2</tag>
  </scm>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/arquillian/arquillian-cube/issues</url>
  </issueManagement>

  <properties>
    <maven.compiler.release>11</maven.compiler.release>
    <version.arquillian_core>1.9.3.Final</version.arquillian_core>
    <version.junit>4.13.2</version.junit>
    <version.hamcrest>2.2</version.hamcrest>
    <version.docker-java>3.4.0</version.docker-java>
    <version.kubernetes_client>7.1.0</version.kubernetes_client>
    <version.snakeyaml>2.4</version.snakeyaml>
    <version.shrinkwrap_resolver>3.3.4</version.shrinkwrap_resolver>
    <version.shrinkwrap>1.2.6</version.shrinkwrap>
    <version.shrinkwrap_descriptors>2.0.0</version.shrinkwrap_descriptors>
    <version.mockito>5.7.0</version.mockito>
    <version.fabric8_mockwebserver>7.1.0</version.fabric8_mockwebserver>
    <version.descriptor.docker>1.0.0-alpha-2</version.descriptor.docker>
    <version.undertow>1.3.33.Final</version.undertow>
    <version.arquillian_spacelift>1.0.2</version.arquillian_spacelift>
    <version.assertj>3.24.2</version.assertj>
    <version.arquillian.reporter>0.0.3</version.arquillian.reporter>
    <version.restassured>5.3.2</version.restassured>
    <version.jgit>6.7.0.202309050840-r</version.jgit>
    <version.systemrules>1.19.0</version.systemrules>
    <version.dmr>1.7.0.Final</version.dmr>
    <version.jackson>2.16.0</version.jackson>
    <version.meta-inf>1.11</version.meta-inf>
    <version.jolokia>1.7.2</version.jolokia>
    <version.fast-classpath-scanner>3.1.13</version.fast-classpath-scanner>
    <!-- Empty property for failsafe groups to avoid conflict with maven-javadoc-plugin's groups -->
    <failsafe.groups />
    <version.awaitility>4.0.1</version.awaitility>
    <version.junit5>5.10.1</version.junit5>
    <!-- Let's set the docker.api.version property default here, to the latest supported by the latest available
    docker-java version, i.e. 3.4.0 ATM -->
    <docker.api.version>1.43</docker.api.version>
    <!-- Modular JVM opts, just for client (Maven Surefire plugin) code -->
    <client.modular.jdk.args />
    <version.maven-surefire-plugin>3.5.2</version.maven-surefire-plugin>
    <version.maven-failsafe-plugin>3.5.2</version.maven-failsafe-plugin>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-spi</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-requirement-spi</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-core</artifactId>
        <classifier>tests</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-containerless</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-requirement</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-drone</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-restassured</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-reporter</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-kubernetes</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-kubernetes-fabric8</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>jkube-maven-plugin-build</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift-restassured</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift-httpclient</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift-shrinkwrap</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-junit-rule</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-junit5</artifactId>
        <version>${project.version}</version>
      </dependency>

      <!-- tag::openshift_starter_dependency[] -->
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-openshift-starter</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <!-- end::openshift_starter_dependency[] -->

      <!-- tag::kubernetes_starter_dependency[] -->
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-kubernetes-starter</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <!-- end::kubernetes_starter_dependency[] -->

      <!-- tag::docker_starter_dependency[] -->
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-docker-starter</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <!-- end::docker_starter_dependency[] -->

      <!-- tag::istio_dependency[] -->
      <dependency>
        <groupId>org.arquillian.cube</groupId>
        <artifactId>arquillian-cube-istio-kubernetes</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>
      <!-- end::istio_dependency[] -->

      <dependency>
        <groupId>org.eclipse.jgit</groupId>
        <artifactId>org.eclipse.jgit</artifactId>
        <version>${version.jgit}</version>
      </dependency>
      <dependency>
        <groupId>io.github.lukehutch</groupId>
        <artifactId>fast-classpath-scanner</artifactId>
        <version>${version.fast-classpath-scanner}</version>
      </dependency>

      <dependency>
        <groupId>org.jboss.arquillian</groupId>
        <artifactId>arquillian-bom</artifactId>
        <version>${version.arquillian_core}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.arquillian.spacelift</groupId>
        <artifactId>arquillian-spacelift</artifactId>
        <version>${version.arquillian_spacelift}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.reporter</groupId>
        <artifactId>arquillian-core-reporter-api</artifactId>
        <version>${version.arquillian.reporter}</version>
      </dependency>
      <dependency>
        <groupId>org.arquillian.reporter</groupId>
        <artifactId>arquillian-reporter-impl</artifactId>
        <version>${version.arquillian.reporter}</version>
      </dependency>

      <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-container-impl-base</artifactId>
        <version>${version.arquillian_core}</version>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.arquillian.core</groupId>
        <artifactId>arquillian-core-impl-base</artifactId>
        <version>${version.arquillian_core}</version>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.arquillian.reporter</groupId>
        <artifactId>arquillian-reporter-impl</artifactId>
        <version>${version.arquillian.reporter}</version>
        <classifier>tests</classifier>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.github.docker-java</groupId>
        <artifactId>docker-java</artifactId>
        <version>${version.docker-java}</version>
      </dependency>
      <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>${version.restassured}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${version.jackson}</version>
      </dependency>

      <dependency>
        <groupId>org.kohsuke.metainf-services</groupId>
        <artifactId>metainf-services</artifactId>
        <version>${version.meta-inf}</version>
        <optional>true</optional>
      </dependency>
      <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-client-java</artifactId>
        <version>${version.jolokia}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jboss-dmr</artifactId>
        <version>${version.dmr}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${version.mockito}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${version.assertj}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.github.stefanbirkner</groupId>
        <artifactId>system-rules</artifactId>
        <version>${version.systemrules}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>${version.snakeyaml}</version>
      </dependency>
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>${version.awaitility}</version>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-openshift-uberjar</artifactId>
        <version>${version.kubernetes_client}</version>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>istio-client</artifactId>
        <version>${version.kubernetes_client}</version>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-server-mock</artifactId>
        <version>${version.kubernetes_client}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${version.junit5}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${version.junit5}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-bom</artifactId>
        <version>${version.shrinkwrap_resolver}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.shrinkwrap.descriptors</groupId>
        <artifactId>shrinkwrap-descriptors-api-docker</artifactId>
        <version>${version.descriptor.docker}</version>
        <scope>test</scope>
      </dependency>

      <!-- Docker Descriptors Implementation -->
      <dependency>
        <groupId>org.jboss.shrinkwrap.descriptors</groupId>
        <artifactId>shrinkwrap-descriptors-impl-docker</artifactId>
        <version>${version.descriptor.docker}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-core</artifactId>
        <version>${version.undertow}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${version.junit}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>${version.hamcrest}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-client</artifactId>
        <version>${version.kubernetes_client}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>openshift-client</artifactId>
        <version>${version.kubernetes_client}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-client-api</artifactId>
        <version>${version.kubernetes_client}</version>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>openshift-client-api</artifactId>
        <version>${version.kubernetes_client}</version>
      </dependency>
      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-httpclient-jdk</artifactId>
        <version>${version.kubernetes_client}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.shrinkwrap</groupId>
        <artifactId>shrinkwrap-api</artifactId>
        <version>${version.shrinkwrap}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.shrinkwrap</groupId>
        <artifactId>shrinkwrap-impl-base</artifactId>
        <version>${version.shrinkwrap}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.shrinkwrap.descriptors</groupId>
        <artifactId>shrinkwrap-descriptors-impl-javaee</artifactId>
        <version>${version.shrinkwrap_descriptors}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${version.maven-surefire-plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${version.maven-failsafe-plugin}</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>${client.modular.jdk.args}</argLine>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <groups>${failsafe.groups}</groups>
          <argLine>${client.modular.jdk.args}</argLine>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <pushChanges>false</pushChanges>
          <localCheckout>true</localCheckout>
          <preparationGoals>clean install</preparationGoals>
          <releaseProfiles>gpg-sign,jboss-release</releaseProfiles>
          <arguments>-DskipTests=true -DskipItTests=true</arguments>
          <tagNameFormat>@{project.version}</tagNameFormat>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>jdk-modular</id>
      <activation>
        <jdk>[11,)</jdk>
      </activation>
      <properties>
        <client.modular.jdk.args>
          --add-exports=java.desktop/sun.awt=ALL-UNNAMED
          --add-opens=java.base/java.lang=ALL-UNNAMED
          --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
          --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
          --add-opens=java.base/java.io=ALL-UNNAMED
          --add-opens=java.base/java.security=ALL-UNNAMED
          --add-opens=java.base/java.util=ALL-UNNAMED
          --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
          --add-opens=java.management/javax.management=ALL-UNNAMED
          --add-opens=java.naming/javax.naming=ALL-UNNAMED
          --add-opens=java.base/java.net=ALL-UNNAMED
        </client.modular.jdk.args>
      </properties>
    </profile>
  </profiles>

  <distributionManagement>
    <repository>
      <id>${jboss.releases.repo.id}</id>
      <name>JBoss Releases Repository</name>
      <url>${jboss.releases.repo.url}</url>
    </repository>
    <snapshotRepository>
      <id>${jboss.snapshots.repo.id}</id>
      <name>JBoss Snapshots Repository</name>
      <url>${jboss.snapshots.repo.url}</url>
    </snapshotRepository>
  </distributionManagement>
</project>
