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

   <artifactId>infinispan-cli-client</artifactId>
   <name>Infinispan CLI Client</name>
   <description>Infinispan CLI Client module</description>

   <properties>
      <cli.main.class>org.infinispan.cli.commands.CLI</cli.main.class>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.aesh</groupId>
         <artifactId>aesh</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-rest</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging</artifactId>
      </dependency>
      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-core</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jboss.remotingjmx</groupId>
         <artifactId>remoting-jmx</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.jboss.xnio</groupId>
         <artifactId>xnio-nio</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.kohsuke.metainf-services</groupId>
         <artifactId>metainf-services</artifactId>
      </dependency>
      <dependency>
         <groupId>org.wildfly.security</groupId>
         <artifactId>wildfly-elytron</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
         </resource>
      </resources>
      <plugins>
         <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <parallel>classes</parallel>
               <groups combine.self="override"/>
               <excludedGroups combine.self="override">${defaultExcludedJUnitGroups}</excludedGroups>
               <testNGArtifactName>none:none</testNGArtifactName>
               <disableXmlReport>false</disableXmlReport>
               <properties combine.self="override">
                  <usedefaultlisteners>false</usedefaultlisteners>
                  <listener>${junitListener}</listener>
               </properties>
            </configuration>
         </plugin>
         <!-- For debug purposes -->
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>default-cli</id>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>${cli.main.class}</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>shade</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-shade-plugin</artifactId>
                  <executions>
                     <execution>
                        <phase>package</phase>
                        <goals>
                           <goal>shade</goal>
                        </goals>
                        <configuration>
                           <transformers>
                              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                 <mainClass>${cli.main.class}</mainClass>
                              </transformer>
                           </transformers>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>native</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-enforcer-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>graalvm-check</id>
                        <goals>
                           <goal>enforce</goal>
                        </goals>
                        <configuration>
                           <rules>
                              <requireEnvironmentVariable>
                                 <variableName>GRAALVM_HOME</variableName>
                              </requireEnvironmentVariable>
                           </rules>
                           <fail>true</fail>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>classpath</id>
                        <phase>package</phase>
                        <goals>
                           <goal>build-classpath</goal>
                        </goals>
                        <configuration>
                           <outputProperty>maven.compile.classpath</outputProperty>
                           <pathSeparator>:</pathSeparator>
                           <includeScope>compile</includeScope>
                        </configuration>
                     </execution>
                  </executions>
                  <configuration>
                     <outputDirectory>${project.build.directory}/lib</outputDirectory>
                     <silent>true</silent>
                  </configuration>
               </plugin>
               <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>exec-maven-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>generate-native-reflection</id>
                        <phase>package</phase>
                        <goals>
                           <goal>exec</goal>
                        </goals>
                        <configuration>
                           <executable>java</executable>
                           <workingDirectory>target</workingDirectory>
                           <arguments>
                              <argument>-cp</argument>
                              <classpath/>
                              <argument>org.aesh.util.GraalReflectionGenerator</argument>
                              <argument>${cli.main.class}</argument>
                           </arguments>
                        </configuration>
                     </execution>
                     <execution>
                        <id>native</id>
                        <phase>package</phase>
                        <goals>
                           <goal>exec</goal>
                        </goals>
                        <configuration>
                           <executable>${env.GRAALVM_HOME}/bin/native-image</executable>
                           <workingDirectory>${project.build.directory}</workingDirectory>
                           <arguments>
                              <argument>--verbose</argument>
                              <argument>-H:+ReportUnsupportedElementsAtRuntime</argument>
                              <argument>-H:+ReportExceptionStackTraces</argument>
                              <argument>-H:ReflectionConfigurationFiles=cli_reflection.json</argument>
                              <argument>-cp</argument>
                              <argument>${maven.compile.classpath}</argument>
                              <argument>-jar</argument>
                              <argument>${project.build.finalName}.jar</argument>
                              <argument>infinispan</argument>
                           </arguments>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
