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

   <artifactId>infinispan-core</artifactId>
   <packaging>bundle</packaging>
   <name>Infinispan Core</name>
   <description>Infinispan core module</description>

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

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

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

      <dependency>
         <groupId>org.eclipse.microprofile.config</groupId>
         <artifactId>microprofile-config-api</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>io.smallrye.config</groupId>
         <artifactId>smallrye-config</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>org.eclipse.microprofile.metrics</groupId>
         <artifactId>microprofile-metrics-api</artifactId>
         <optional>true</optional>
      </dependency>

      <dependency>
         <groupId>io.smallrye</groupId>
         <artifactId>smallrye-metrics</artifactId>
         <optional>true</optional>
      </dependency>

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

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

      <dependency>
         <groupId>org.jboss.spec.javax.transaction</groupId>
         <artifactId>jboss-transaction-api_1.2_spec</artifactId>
      </dependency>

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

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

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

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons-test</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-commons</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.hamcrest</groupId>
         <artifactId>hamcrest-core</artifactId>
         <scope>test</scope>
      </dependency>
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <scope>test</scope>
       </dependency>

      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-math</artifactId>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.apache.geronimo.components</groupId>
         <artifactId>geronimo-transaction</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.apache.geronimo.specs</groupId>
               <artifactId>geronimo-jta_1.1_spec</artifactId>
            </exclusion>
         </exclusions>
      </dependency>

      <dependency>
         <groupId>org.objectweb.howl</groupId>
         <artifactId>howl</artifactId>
         <scope>test</scope>
      </dependency>

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

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

      <dependency>
         <groupId>org.jboss</groupId>
         <artifactId>jdk-misc</artifactId>
         <version>2.Final</version>
         <scope>provided</scope>
      </dependency>

      <!-- We need the Karaf distribution as a dependency for karaf-maven-plugin -->
      <!-- But we don't want to use its dependencies (e.g. pax-logging-api) in the core tests -->
      <dependency>
         <groupId>org.apache.karaf.features</groupId>
         <artifactId>framework</artifactId>
         <type>kar</type>
         <scope>provided</scope>
         <exclusions>
            <exclusion>
               <groupId>*</groupId>
               <artifactId>*</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
               <include>features.xml</include>
            </includes>
         </resource>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>schema/*-${infinispan.core.schema.version}.xsd</include>
            </includes>
         </resource>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>**/*</include>
            </includes>
            <excludes>
               <exclude>features.xml</exclude>
               <exclude>schema/**</exclude>
            </excludes>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <filtering>true</filtering>
            <excludes>
               <exclude>10_1_x_sfs_data/*</exclude>
            </excludes>
         </testResource>
         <!-- Make sure the filtering is disabled for 10.1.x SFS data, otherwise the file gets "corrupted" -->
         <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>10_1_x_sfs_data/*</include>
            </includes>
         </testResource>
      </testResources>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
               <execution>
                  <id>generate-blueprint</id>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <phase>prepare-package</phase>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <configuration>
               <instructions>
                  <Export-Package>
                     !${project.groupId}.component.*,
                     !${project.groupId}.factories.annotations,
                     !${project.groupId}.factories.scopes,
                     !${project.groupId}.jmx.annotations,
                     !${project.groupId}.commons.*,
                     !${project.groupId}.counter.*,
                     !${project.groupId}.multimap.*,
                     !${project.groupId}.lock.*,
                     !${project.groupId}.protostream.*,
                     ${project.groupId}.*;version=${project.version};-split-package:=error
                  </Export-Package>
                  <Import-Package>
                     <!-- These exclusions are needed as long as we reference the annotations in code -->
                     <!-- Deprecated org.infinispan.factories.components.*Metadata -->
                     <!-- Making the annotations dependency optional would have also satisfied the verify plugin -->
                     !org.infinispan.factories.annotations.*,
                     !org.infinispan.factories.scopes.*,
                     !org.infinispan.jmx.annotations.*,
                     *
                  </Import-Package>
                  <Include-Resource>
                     {maven-resources},
                     /schema=${project.build.outputDirectory}/schema,
                     /proto=${project.build.outputDirectory}/proto,
                     /META-INF/services=${project.build.outputDirectory}/META-INF/services,
                     /OSGI-INF/blueprint/blueprint.xml=${project.build.outputDirectory}/OSGI-INF/blueprint/blueprint.xml
                  </Include-Resource>
                  <DynamicImport-Package>*</DynamicImport-Package>
               </instructions>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>attach-artifacts</id>
                  <phase>package</phase>
                  <goals>
                     <goal>attach-artifact</goal>
                  </goals>
                  <configuration>
                     <artifacts>
                        <artifact>
                           <file>target/classes/features.xml</file>
                           <type>xml</type>
                           <classifier>features</classifier>
                        </artifact>
                     </artifacts>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>karaf-maven-plugin</artifactId>
            <configuration>
               <features>
                  <feature>infinispan-core</feature>
               </features>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-defaults-maven-plugin</artifactId>
             <version>${project.version}</version>
            <executions>
               <execution>
                  <id>extract-defaults</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>extract-defaults</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <dependencies>
               <!-- Explicit dependency on surefire-testng to help builds without access to Maven Central -->
               <dependency>
                  <groupId>org.apache.maven.surefire</groupId>
                  <artifactId>surefire-testng</artifactId>
                  <version>${version.maven.surefire}</version>
               </dependency>
            </dependencies>
            <configuration>
               <dependenciesToScan>
                  <!-- TestNGSuiteChecksTest -->
                  <dependency>org.infinispan:infinispan-commons-test</dependency>
               </dependenciesToScan>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.infinispan.maven-plugins</groupId>
            <artifactId>proto-schema-compatibility</artifactId>
            <executions>
               <execution>
                  <goals>
                     <goal>proto-schema-compatibility-check</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>smoke</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <configuration>
                     <excludes>
                        <!-- explicitly exclude some tests because of TestNG issue which ignores
                             restricted groups in subclasses -->
                        <exclude>**/*Async*.java</exclude>
                        <exclude>**/ReplSyncDistributedExecutor*.java</exclude>
                        <exclude>**/DistributedExecutorWith*.java</exclude>
                        <exclude>**/DistAsync*.java</exclude>
                        <exclude>**/DistSyncUnsafe*.java</exclude>
                        <exclude>**/TopologyAwareDist*.java</exclude>
                     </excludes>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
