<?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.0.Dev07</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.aesh</groupId>
         <artifactId>readline</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-graalvm</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>io.fabric8</groupId>
         <artifactId>kubernetes-client</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>io.lettuce</groupId>
         <artifactId>lettuce-core</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
         <optional>true</optional> <!-- Configuration converter -->
      </dependency>
      <dependency>
         <groupId>org.kohsuke.metainf-services</groupId>
         <artifactId>metainf-services</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
      </dependency>
      <dependency>
         <groupId>org.wildfly.openssl</groupId>
         <artifactId>wildfly-openssl-java</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.wildfly.security</groupId>
         <artifactId>wildfly-elytron-credential-store</artifactId>
      </dependency>
      <dependency>
         <groupId>org.wildfly.security</groupId>
         <artifactId>wildfly-elytron-password-impl</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-tools</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-hotrod</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.openjdk.jmh</groupId>
         <artifactId>jmh-core</artifactId>
         <scope>compile</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.openjdk.jmh</groupId>
         <artifactId>jmh-generator-annprocess</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
         </resource>
      </resources>
      <plugins>
         <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
               <archive>
                  <manifestEntries>
                     <Main-Class>${cli.main.class}</Main-Class>
                  </manifestEntries>
               </archive>
            </configuration>
         </plugin>
         <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>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
               <!-- For debug purposes -->
               <execution>
                  <id>default-cli</id>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>${cli.main.class}</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                  </configuration>
               </execution>
               <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.cli.util.aesh.graal.NativeMetadataProvider</argument>
                        <argument>classes/META-INF/native-image/org.infinispan/infinispan-cli-client</argument>
                     </arguments>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>shade</id>
         <dependencies>
            <dependency>
               <groupId>org.apache.logging.log4j</groupId>
               <artifactId>log4j-slf4j-impl</artifactId>
               <scope>compile</scope>
            </dependency>
         </dependencies>
         <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">
                                 <manifestEntries>
                                    <Main-Class>${cli.main.class}</Main-Class>
                                    <Multi-Release>true</Multi-Release>
                                 </manifestEntries>
                              </transformer>
                           </transformers>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>

