<?xml version='1.0' encoding='UTF-8'?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.infinispan</groupId>
      <artifactId>infinispan-parent</artifactId>
      <version>15.2.6.Final</version>
      <relativePath>../../pom.xml</relativePath>
   </parent>

   <artifactId>infinispan-client-hotrod-graalvm</artifactId>
   <packaging>jar</packaging>
   <name>Infinispan Hot Rod Client GraalVM</name>
   <description>Infinispan Hot Rod Client GraalVM</description>

   <dependencies>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-graalvm</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-hotrod</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-query-dsl</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-remote-query-client</artifactId>
      </dependency>
      <dependency>
         <groupId>org.graalvm.sdk</groupId>
         <artifactId>graal-sdk</artifactId>
      </dependency>
      <dependency>
         <groupId>io.smallrye</groupId>
         <artifactId>jandex</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-rest</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-cli-client</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.apache.commons</groupId>
               <artifactId>commons-compress</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-tests</artifactId>
         <scope>test</scope>
         <type>test-jar</type>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-rest</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-testdriver-junit5</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.infinispan</groupId>
               <artifactId>infinispan-server-runtime</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core-graalvm</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>proto-sample-domain-implementation</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-api</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-params</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-suite</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.assertj</groupId>
         <artifactId>assertj-core</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>graalvm-meta</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>exec</goal>
                  </goals>
                  <configuration>
                     <executable>${env.JAVA_HOME}/bin/java</executable>
                     <workingDirectory>target</workingDirectory>
                     <arguments>
                        <argument>-cp</argument>
                        <classpath/>
                        <argument>org.infinispan.commons.graalvm.NativeMetadataWriter</argument>
                        <argument>org.infinispan.client.hotrod.graalvm.NativeMetadataProvider</argument>
                        <argument>
                           classes/META-INF/native-image/org.infinispan/infinispan-client-hotrod-graalvm
                        </argument>
                     </arguments>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>native</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <configuration combine.self="override">
                     <argLine>-Dorg.infinispan.test.server.driver=CONTAINER</argLine>
                     <systemPropertyVariables>
                        <infinispan.cluster.stack>tcp</infinispan.cluster.stack>
                        <org.infinispan.test.server.dir>${project.basedir}/../../server/runtime/target/${infinispan.brand.prefix}-server-${infinispan.brand.version}</org.infinispan.test.server.dir>
                     </systemPropertyVariables>
                  </configuration>
               </plugin>
               <plugin>
                  <groupId>org.graalvm.buildtools</groupId>
                  <artifactId>native-maven-plugin</artifactId>
                  <extensions>true</extensions>
                  <executions>
                     <execution>
                        <id>test-native</id>
                        <goals>
                           <goal>test</goal>
                        </goals>
                        <phase>test</phase>
                     </execution>
                  </executions>
                  <configuration>
                     <buildArgs>
                        <buildArg>-J-Xmx5g</buildArg>
                        <buildArg>-J-Djava.util.logging.manager=org.jboss.logmanager.LogManager</buildArg>
                        <buildArg>-H:+AddAllCharsets</buildArg>
                        <buildArg>-H:+ReportExceptionStackTraces</buildArg>
                        <buildArg>-H:ReflectionConfigurationResources=reflect-config.json</buildArg>
                        <buildArg>-H:ResourceConfigurationResources=resource-config.json</buildArg>
                        <buildArg>-H:+AllowDeprecatedBuilderClassesOnImageClasspath</buildArg>
                     </buildArgs>
                     <metadataRepository>
                        <enabled>true</enabled>
                        <dependencies>
                           <dependency>
                              <groupId>org.testcontainers</groupId>
                              <artifactId>testcontainers</artifactId>
                              <metadataVersion>1.17.6</metadataVersion>
                           </dependency>
                        </dependencies>
                     </metadataRepository>
                     <fallback>false</fallback>
                     <quickBuild>true</quickBuild>
                     <verbose>true</verbose>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
