<?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.0.14.Final</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-commons-test</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.platform</groupId>
         <artifactId>junit-platform-launcher</artifactId>
         <version>${version.junit.platform}</version>
         <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.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>-J-Djava.util.logging.manager=org.jboss.logmanager.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>
                              <buildArg>--trace-class-initialization=org.junit.platform.launcher.core.LauncherConfig</buildArg>
                           </buildArgs>
                           <fallback>false</fallback>
                           <quickBuild>true</quickBuild>
                        </configuration>
                     </execution>
                  </executions>
                  <configuration>
                     <quickBuild>true</quickBuild>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
