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

   <artifactId>infinispan-commons</artifactId>
   <packaging>jar</packaging>
   <name>Infinispan Commons</name>
   <description>Infinispan Commons</description>

   <dependencies>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-logging-processor</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan.protostream</groupId>
         <artifactId>protostream</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan.protostream</groupId>
         <artifactId>protostream-types</artifactId>
      </dependency>

      <dependency>
         <groupId>org.infinispan.protostream</groupId>
         <artifactId>protostream-processor</artifactId>
      </dependency>

      <dependency>
         <groupId>com.github.ben-manes.caffeine</groupId>
         <artifactId>caffeine</artifactId>
      </dependency>

      <dependency>
         <groupId>io.reactivex.rxjava3</groupId>
         <artifactId>rxjava</artifactId>
      </dependency>

      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging</artifactId>
      </dependency>

      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-spi</artifactId>
         <version>${project.version}</version>
         <scope>provided</scope>
      </dependency>

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

      <dependency>
         <groupId>io.projectreactor.tools</groupId>
         <artifactId>blockhound</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-core</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>org.jboss.marshalling</groupId>
         <artifactId>jboss-marshalling</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>org.kohsuke.metainf-services</groupId>
         <artifactId>metainf-services</artifactId>
      </dependency>

      <!-- Test dependencies -->
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.assertj</groupId>
         <artifactId>assertj-core</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.wildfly.security</groupId>
         <artifactId>wildfly-elytron-x500-cert</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
               <include>META-INF/infinispan-version.properties</include>
            </includes>
         </resource>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>**/*</include>
            </includes>
            <excludes>
               <exclude>META-INF/infinispan-version.properties</exclude>
            </excludes>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
      </testResources>

      <plugins>
         <!-- compiler to use -XDignore.symbol.file to suppress warnings regarding the use of sun.misc.Unsafe -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
               <compilerArgument combine.children="append">-XDignore.symbol.file</compilerArgument>
               <!-- Forking is necessary to allow for the compiler args to be picked up. -->
               <fork combine.children="append">true</fork>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
               <execution>
                  <id>spi</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>unpack</goal>
                  </goals>
                  <configuration>
                     <artifactItems>
                        <artifactItem>
                           <groupId>org.infinispan</groupId>
                           <artifactId>infinispan-commons-spi</artifactId>
                           <version>${project.version}</version>
                           <type>jar</type>
                           <overWrite>false</overWrite>
                           <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                           <includes>**/*.class</includes>
                        </artifactItem>
                     </artifactItems>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
               <archive>
                  <manifestEntries>
                     <Multi-Release>true</Multi-Release>
                  </manifestEntries>
               </archive>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <parallel>classes</parallel>
               <groups combine.self="override">${defaultJUnitGroups}</groups>
               <excludedGroups combine.self="override">${defaultExcludedJUnitGroups}</excludedGroups>
               <disableXmlReport>false</disableXmlReport>
               <properties combine.self="override">
                  <usedefaultlisteners>false</usedefaultlisteners>
                  <listener>${junitListener}</listener>
               </properties>
            </configuration>
            <dependencies>
               <dependency>
                  <groupId>org.apache.maven.surefire</groupId>
                  <artifactId>surefire-junit47</artifactId>
                  <version>${version.maven.surefire}</version>
               </dependency>
            </dependencies>
         </plugin>
         <plugin>
            <groupId>org.infinispan.protostream</groupId>
            <artifactId>proto-schema-compatibility-maven-plugin</artifactId>
            <executions>
               <execution>
                  <goals>
                     <goal>proto-schema-compatibility-check</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <executions>
               <execution>
                  <id>clean-metainf-services</id>
                  <phase>install</phase>
                  <goals>
                     <goal>clean</goal>
                  </goals>
                  <configuration>
                     <excludeDefaultDirectories>true</excludeDefaultDirectories>
                     <filesets>
                        <fileset>
                           <directory>${project.build.outputDirectory}</directory>
                           <includes>
                              <include>META-INF/services/java.net.spi.URLStreamHandlerProvider</include>
                           </includes>
                        </fileset>
                     </filesets>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
   <profiles>
      <profile>
         <id>jdk21</id>
         <activation>
            <jdk>21</jdk>
         </activation>
         <dependencies>
            <dependency>
               <groupId>org.infinispan</groupId>
               <artifactId>infinispan-commons-jdk21</artifactId>
               <version>${project.version}</version>
               <scope>provided</scope>
            </dependency>
         </dependencies>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>jdk21</id>
                        <phase>prepare-package</phase>
                        <goals>
                           <goal>unpack</goal>
                        </goals>
                        <configuration>
                           <artifactItems>
                              <artifactItem>
                                 <groupId>org.infinispan</groupId>
                                 <artifactId>infinispan-commons-jdk21</artifactId>
                                 <version>${project.version}</version>
                                 <type>jar</type>
                                 <overWrite>false</overWrite>
                                 <outputDirectory>${project.build.outputDirectory}/META-INF/versions/21</outputDirectory>
                                 <includes>**/*.class</includes>
                              </artifactItem>
                           </artifactItems>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>jdk22</id>
         <activation>
            <jdk>[22,)</jdk>
         </activation>
         <dependencies>
            <dependency>
               <groupId>org.infinispan</groupId>
               <artifactId>infinispan-commons-jdk21</artifactId>
               <version>${project.version}</version>
               <scope>provided</scope>
            </dependency>
            <dependency>
               <groupId>org.infinispan</groupId>
               <artifactId>infinispan-commons-jdk22</artifactId>
               <version>${project.version}</version>
               <scope>provided</scope>
            </dependency>

         </dependencies>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>jdk22</id>
                        <phase>prepare-package</phase>
                        <goals>
                           <goal>unpack</goal>
                        </goals>
                        <configuration>
                           <artifactItems>
                              <artifactItem>
                                 <groupId>org.infinispan</groupId>
                                 <artifactId>infinispan-commons-jdk21</artifactId>
                                 <version>${project.version}</version>
                                 <type>jar</type>
                                 <overWrite>false</overWrite>
                                 <outputDirectory>${project.build.outputDirectory}/META-INF/versions/21</outputDirectory>
                                 <includes>**/*.class</includes>
                              </artifactItem>
                              <artifactItem>
                                 <groupId>org.infinispan</groupId>
                                 <artifactId>infinispan-commons-jdk22</artifactId>
                                 <version>${project.version}</version>
                                 <type>jar</type>
                                 <overWrite>false</overWrite>
                                 <outputDirectory>${project.build.outputDirectory}/META-INF/versions/22</outputDirectory>
                                 <includes>**/*.class</includes>
                              </artifactItem>
                           </artifactItems>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>

   </profiles>
</project>
