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

   <artifactId>infinispan-core-graalvm</artifactId>
   <packaging>jar</packaging>
   <name>Infinispan Core GraalVM</name>
   <description>Infinispan Core GraalVM</description>

   <properties>
      <infinispan.cluster.stack>tcp</infinispan.cluster.stack>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-graalvm</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jgroups</groupId>
         <artifactId>jgroups</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jgroups</groupId>
         <artifactId>jgroups-raft</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.jboss.narayana.jta</groupId>
         <artifactId>narayana-jta</artifactId>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>jakarta.transaction</groupId>
         <artifactId>jakarta.transaction-api</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-testing</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
         <scope>test</scope>
         <type>test-jar</type>
      </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>
      <testResources>
         <!-- Make sure the filtering is disabled for binary data, otherwise the files get "corrupted" -->
         <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <filtering>false</filtering>
            <excludes>
               <exclude>**/*.xml</exclude>
               <exclude>**/*.yaml</exclude>
               <exclude>**/*.json</exclude>
               <exclude>**/*.properties</exclude>
               <exclude>**/*.MF</exclude>
            </excludes>
         </testResource>
         <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <filtering>true</filtering>
            <includes>
               <include>**/*.xml</include>
               <include>**/*.yaml</include>
               <include>**/*.json</include>
               <include>**/*.properties</include>
               <include>**/*.MF</include>
            </includes>
         </testResource>
      </testResources>
      <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.graalvm.NativeMetadataProvider</argument>
                        <argument>classes/META-INF/native-image/org.infinispan/infinispan-core-graalvm</argument>
                     </arguments>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <parallel>none</parallel>
               <groups combine.self="override">${defaultJUnitGroups}</groups>
               <excludedGroups combine.self="override">${defaultExcludedJUnitGroups}</excludedGroups>
               <disableXmlReport>false</disableXmlReport>
               <properties>
                  <!-- Deactivate the default listeners which may cause OOME. Jenkins uses the surefire generated XML file. -->
                  <usedefaultlisteners>false</usedefaultlisteners>
                  <listener>${junitListener}</listener>
               </properties>
            </configuration>
            <dependencies>
               <dependency>
                  <groupId>org.apache.maven.surefire</groupId>
                  <artifactId>surefire-junit-platform</artifactId>
                  <version>${version.maven.surefire}</version>
               </dependency>
            </dependencies>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>native</id>
         <build>
            <plugins>
               <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>integration-test</phase>
                        <configuration>
                           <buildArgs>
                              <buildArg>-J-Xmx5g</buildArg>
                              <buildArg>-H:+UnlockExperimentalVMOptions</buildArg>
                              <buildArg>-J-Djava.util.logging.manager=java.util.logging.LogManager</buildArg>
                              <buildArg>-H:+AllowDeprecatedBuilderClassesOnImageClasspath</buildArg>
                              <buildArg>-H:IncludeResources=embedded.xml</buildArg>
                              <buildArg>-H:IncludeResources=stacks/udp.xml</buildArg>
                              <buildArg>-H:IncludeResources=stacks/tcp.xml</buildArg>
                              <buildArg>-H:IncludeResources=stacks/tcp_mping/tcp1.xml</buildArg>
                              <buildArg>-H:ServiceLoaderFeatureExcludeServiceProviders=org.infinispan.marshall.ServiceLoadedSciImpl</buildArg>
                              <buildArg>--enable-url-protocols=http</buildArg>
                           </buildArgs>
                           <fallback>false</fallback>
                           <quickBuild>true</quickBuild>
                        </configuration>
                     </execution>
                  </executions>
                  <configuration>
                     <quickBuild>true</quickBuild>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
