<?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>13.0.0.Final</version>
      <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>infinispan-distribution</artifactId>
   <name>Infinispan Distribution</name>
   <packaging>pom</packaging>

   <dependencies>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-core</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-query</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-hotrod</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-cli</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-cachestore-remote</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-spring5-embedded</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-spring5-remote</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-tools</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-extended-statistics</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-javadoc-all</artifactId>
         <version>${version.infinispan}</version>
         <classifier>javadoc</classifier>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-feature-pack</artifactId>
         <version>${project.version}</version>
         <type>zip</type>
      </dependency>

      <dependency>
         <groupId>javax.cache</groupId>
         <artifactId>cache-api</artifactId>
         <scope>provided</scope>
      </dependency>

      <dependency>
         <groupId>jakarta.enterprise</groupId>
         <artifactId>jakarta.enterprise.cdi-api</artifactId>
         <scope>provided</scope>
      </dependency>

      <dependency>
         <groupId>org.jgroups.azure</groupId>
         <artifactId>jgroups-azure</artifactId>
      </dependency>

      <dependency>
         <groupId>org.jgroups.kubernetes</groupId>
         <artifactId>jgroups-kubernetes</artifactId>
      </dependency>

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
               <execution>
                  <id>copy-licenses-xml</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>copy-resources</goal>
                  </goals>
                  <configuration>
                     <outputDirectory>${project.build.directory}/docs/licenses</outputDirectory>
                     <resources>
                        <resource>
                           <directory>${project.basedir}/src/main/resources/template</directory>
                           <includes>
                              <include>licenses.xml</include>
                              <include>licenses.css</include>
                           </includes>
                           <filtering>false</filtering>
                        </resource>
                        <resource>
                           <directory>${project.basedir}/src/main/resources/licenses</directory>
                           <includes>
                              <include>*</include>
                           </includes>
                           <filtering>false</filtering>
                        </resource>
                     </resources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <!-- Collect licenses -->
         <plugin>
            <groupId>org.wildfly.maven.plugins</groupId>
            <artifactId>licenses-plugin</artifactId>
            <version>${versionx.org.wildfly.maven.plugins.licenses-plugin}</version>
            <inherited>false</inherited>
            <executions>
               <execution>
                  <id>update-licenses-xml</id>
                  <goals>
                     <goal>insert-versions</goal>
                  </goals>
                  <phase>prepare-package</phase>
                  <configuration>
                     <sortByGroupIdAndArtifactId>true</sortByGroupIdAndArtifactId>
                     <licensesOutputFile>${project.build.directory}/docs/licenses/licenses.xml</licensesOutputFile>
                     <excludedGroups>org.kohsuke</excludedGroups>
                     <excludedArtifacts>jboss-logging-processor|jdeparser|jcip-annotations|jboss-logging-annotations</excludedArtifacts>
                     <excludedScopes>system,test,runtime</excludedScopes>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.jboss.galleon</groupId>
            <artifactId>galleon-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>provision-modules</id>
                  <goals>
                     <goal>provision</goal>
                  </goals>
                  <phase>compile</phase>
                  <configuration>
                     <install-dir>${project.build.directory}/${infinispan.brand.prefix}-${wildfly.brand.prefix}-modules-${infinispan.brand.version}</install-dir>
                     <record-state>false</record-state>
                     <!-- true: uses local m2 cache only -->
                     <offline>false</offline>
                     <feature-packs>
                        <!-- Infinispan modules -->
                        <feature-pack>
                           <groupId>${project.groupId}</groupId>
                           <artifactId>infinispan-feature-pack</artifactId>
                           <version>${project.version}</version>
                           <inherit-configs>false</inherit-configs>
                        </feature-pack>
                     </feature-packs>
                     <plugin-options>
                        <!--
                        when true, the module.xml files only contains the maven coordinates of the jars to download when the server starts
                        when false, the plugin downloads the jars at build time
                         -->
                        <jboss-maven-dist>false</jboss-maven-dist>
                     </plugin-options>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
               <execution>
                  <!-- Build the Schema documentation -->
                  <id>xsdocgen</id>
                  <phase>package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <property name="plugin_classpath" refid="maven.plugin.classpath" />
                        <echo level="info" message="Base dir: ${basedir}" />
                        <path id="xsd.fileset.path">
                           <fileset casesensitive="yes" dir="${basedir}/..">
                              <!-- make sure core comes first -->
                              <include name="core/target/classes/schema/infinispan-config-${infinispan.core.schema.version}.xsd" />
                              <include name="persistence/*/target/classes/schema/*-${infinispan.core.schema.version}.xsd" />
                              <include name="spring/spring5/spring5-common/target/classes/schema/*-${infinispan.core.schema.version}.xsd" />
                              <include name="server/runtime/target/classes/schema/*-${infinispan.core.schema.version}.xsd" />
                              <include name="counter/target/classes/schema/*-${infinispan.core.schema.version}.xsd" />
                              <include name="lock/target/classes/schema/*-${infinispan.core.schema.version}.xsd" />
                           </fileset>
                        </path>
                        <pathconvert pathsep=" " property="xsd.fileset" refid="xsd.fileset.path" />
                        <echo level="info" message="XSDs: ${xsd.fileset}" />
                        <java classname="org.infinispan.tools.xsd.XSDoc">
                           <arg value="-o" />
                           <arg value="${project.build.directory}/site/configdocs" />
                           <arg line="${xsd.fileset}" />
                           <classpath>
                              <pathelement path="${plugin_classpath}" />
                           </classpath>
                        </java>
                     </target>
                  </configuration>
               </execution>
               <execution>
                  <id>distribution</id>
                  <phase>package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <ant antfile="package.xml" inheritRefs="true">
                           <property name="plugin_classpath" refid="maven.plugin.classpath" />
                           <property name="infinispan.brand.version" value="${infinispan.brand.version}"/>
                           <property name="infinispan.brand.prefix" value="${infinispan.brand.prefix}"/>
                           <property name="infinispan.brand.name" value="${infinispan.brand.name}"/>
                           <property name="wildfly.brand.prefix" value="${wildfly.brand.prefix}"/>
                        </ant>
                     </target>
                  </configuration>
               </execution>
               <execution>
                  <id>upload-distributions</id>
                  <phase>deploy</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <skip>${skipArtifactUpload}</skip>
                     <target>
                        <echo level="info" message="Creating checksums of distribution files"/>
                        <checksum algorithm="SHA-1" fileext=".sha1">
                           <fileset dir="${project.build.directory}/distribution">
                              <include name="*.zip"/>
                           </fileset>
                        </checksum>
                        <echo level="info" message="Uploading Distributions to ${upload.downloadsDir}"/>
                        <exec dir="${project.build.directory}/distribution" executable="rsync">
                           <arg value="-rvm"/>
                           <arg line="--protocol=29"/>
                           <arg line="-e &quot;ssh -i ${upload.keyFile}&quot;"/>
                           <arg line="--include='*.zip'"/>
                           <arg line="--include='*.sha1'"/>
                           <arg line="--exclude='*'"/>
                           <arg value="."/>
                           <arg value="${upload.downloadsDir}"/>
                        </exec>
                        <echo level="info" message="Uploading Schema docs to ${upload.docsDir}"/>
                        <exec dir="${project.build.directory}/site" executable="rsync">
                           <arg value="-rvm"/>
                           <arg line="--protocol=29"/>
                           <arg line="-e &quot;ssh -i ${upload.keyFile}&quot;"/>
                           <arg value="configdocs"/>
                           <arg value="${upload.docsDir}"/>
                        </exec>
                        <exec dir="${project.build.directory}/site" executable="rsync">
                           <arg value="-rvm"/>
                           <arg line="--protocol=29"/>
                           <arg line="-e &quot;ssh -i ${upload.keyFile}&quot;"/>
                           <arg value="serverconfigdocs"/>
                           <arg value="${upload.docsDir}"/>
                        </exec>
                     </target>
                  </configuration>
               </execution>
            </executions>
            <dependencies>
               <dependency>
                  <groupId>org.infinispan</groupId>
                  <artifactId>infinispan-tools</artifactId>
                  <version>${version.infinispan}</version>
               </dependency>
            </dependencies>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
               <execution>
                  <id>assemble</id>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
                  <configuration>
                     <descriptors>
                        <descriptor>src/main/assemblies/src.xml</descriptor>
                     </descriptors>
                     <finalName>${infinispan.brand.prefix}-${infinispan.brand.version}</finalName>
                  </configuration>
               </execution>
               <execution>
                  <id>assemble-modules</id>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
                  <configuration>
                     <appendAssemblyId>false</appendAssemblyId>
                     <finalName>${infinispan.brand.prefix}-${wildfly.brand.prefix}-modules-${infinispan.brand.version}</finalName>
                     <descriptors>
                        <descriptor>src/main/assemblies/wildfly.xml</descriptor>
                     </descriptors>
                  </configuration>
               </execution>
               <execution>
                  <id>assemble-server</id>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
                  <configuration>
                     <descriptors>
                        <descriptor>src/main/assemblies/server.xml</descriptor>
                     </descriptors>
                     <finalName>${infinispan.brand.prefix}-server-${infinispan.brand.version}</finalName>
                     <appendAssemblyId>false</appendAssemblyId>
                  </configuration>
               </execution>
            </executions>
            <configuration>
               <outputDirectory>${project.build.directory}/distribution</outputDirectory>
               <workDirectory>${project.build.directory}/assembly/work</workDirectory>
               <!-- (Do not attach ZIP files to the Maven repository) -->
               <attach>${org.infinispan.attachServerZip}</attach>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>nexus-staging</id>
         <activation>
            <property><name>deployServerZip</name></property>
         </activation>
         <build>
            <plugins>
               <!-- Deploy the file we've explicitly installed.
                    MUST provide properties repositoryId and url
               -->
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-deploy-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>deploy-fat-server</id>
                        <phase>deploy</phase>
                        <goals>
                           <goal>deploy-file</goal>
                        </goals>
                        <configuration>
                           <groupId>org.infinispan.server</groupId>
                           <artifactId>infinispan-server</artifactId>
                           <version>${project.version}</version>
                           <packaging>zip</packaging>
                           <file>${project.build.directory}/distribution/${infinispan.brand.prefix}-server-${infinispan.brand.version}.zip</file>
                           <generatePom>false</generatePom>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
