<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>org.infinispan</groupId>
      <artifactId>infinispan-build-configuration-parent</artifactId>
      <version>9.4.0.Final</version>
      <relativePath>build-configuration/pom.xml</relativePath>
   </parent>

   <groupId>org.infinispan</groupId>
   <artifactId>infinispan-parent</artifactId>
   <version>9.4.0.Final</version>
   <packaging>pom</packaging>
   <name>Infinispan Common Parent</name>
   <description>Infinispan common parent POM module</description>
   <url>http://www.infinispan.org</url>
   <organization>
      <name>JBoss, a division of Red Hat</name>
      <url>http://www.jboss.org</url>
   </organization>
   <licenses>
      <license>
         <name>Apache License 2.0</name>
         <url>http://www.apache.org/licenses/LICENSE-2.0</url>
         <distribution>repo</distribution>
      </license>
   </licenses>
   <developers>
      <developer>
         <id>placeholder</id>
         <name>See http://www.infinispan.org for a complete list of contributors</name>
      </developer>
   </developers>
   <mailingLists>
      <mailingList>
         <name>Infinispan Issues</name>
         <subscribe>https://lists.jboss.org/mailman/listinfo/infinispan-issues</subscribe>
         <unsubscribe>https://lists.jboss.org/mailman/listinfo/infinispan-issues</unsubscribe>
         <post>infinispan-issues@lists.jboss.org</post>
         <archive>http://lists.jboss.org/pipermail/infinispan-issues/</archive>
      </mailingList>
      <mailingList>
         <name>Infinispan Developers</name>
         <subscribe>https://lists.jboss.org/mailman/listinfo/infinispan-dev</subscribe>
         <unsubscribe>https://lists.jboss.org/mailman/listinfo/infinispan-dev</unsubscribe>
         <post>infinispan-dev@lists.jboss.org</post>
         <archive>http://lists.jboss.org/pipermail/infinispan-dev/</archive>
      </mailingList>
   </mailingLists>
   <scm>
      <connection>scm:git:git@github.com:infinispan/infinispan.git</connection>
      <developerConnection>scm:git:git@github.com:infinispan/infinispan.git</developerConnection>
      <url>https://github.com/infinispan/infinispan</url>
   </scm>
   <issueManagement>
      <system>jira</system>
      <url>https://issues.jboss.org/browse/ISPN</url>
   </issueManagement>
   <ciManagement>
      <system>Jenkins</system>
      <url>https://ci.infinispan.org</url>
      <notifiers>
         <notifier>
            <type>mail</type>
            <address>infinispan-commits@lists.jboss.org</address>
         </notifier>
      </notifiers>
   </ciManagement>
   <distributionManagement>
      <repository>
         <id>${jboss.releases.repo.id}</id>
         <name>JBoss Release Repository</name>
         <url>${jboss.releases.repo.url}</url>
      </repository>
      <snapshotRepository>
         <id>${jboss.snapshots.repo.id}</id>
         <name>JBoss Snapshot Repository</name>
         <url>${jboss.snapshots.repo.url}</url>
      </snapshotRepository>
   </distributionManagement>
   <modules>
      <module>build-configuration</module>
      <module>checkstyle</module>
      <module>license</module>
      <module>commons</module>
      <module>commons-test</module>
      <module>plugins/infinispan-defaults-maven-plugin</module>
      <module>plugins/protocol-parser-generator-maven-plugin</module>
      <module>core</module>
      <module>cloud</module>
      <module>extended-statistics</module>
      <module>counter</module>
      <module>multimap</module>
      <module>tools</module>
      <module>query</module>
      <module>query-dsl</module>
      <module>remote-query/remote-query-client</module>
      <module>remote-query/remote-query-server</module>
      <module>object-filter</module>
      <module>tree</module>
      <module>lucene</module>
      <module>lucene/lucene-directory</module>
      <module>lucene/directory-provider</module>
      <module>persistence</module>
      <module>persistence/jdbc</module>
      <module>persistence/jpa</module>
      <module>persistence/remote</module>
      <module>persistence/cli</module>
      <module>persistence/leveldb</module>
      <module>persistence/rest</module>
      <module>persistence/rocksdb</module>
      <module>persistence/soft-index</module>
      <module>server</module>
      <module>server/core</module>
      <module>server/memcached</module>
      <module>server/hotrod</module>
      <module>server/rest</module>
      <module>server/router</module>
      <module>client/hotrod-client</module>
      <module>atomic-factory</module>
      <module>all</module>
      <module>all/remote</module>
      <module>all/embedded</module>
      <module>all/embedded-query</module>
      <module>all/cli</module>
      <module>osgi</module>
      <module>spring/spring4</module>
      <module>spring/spring4/spring4-common</module>
      <module>spring/spring4/spring4-embedded</module>
      <module>spring/spring4/spring4-remote</module>
      <module>cli/cli-interpreter</module>
      <module>cli/cli-client</module>
      <module>tasks/api</module>
      <module>tasks/manager</module>
      <module>tasks/scripting</module>
      <module>demos/gui</module>
      <module>cdi</module>
      <module>cdi/common</module>
      <module>cdi/embedded</module>
      <module>cdi/remote</module>
      <module>lock</module>
      <module>feature-pack</module>
      <module>server/integration</module>
      <module>jcache</module>
      <module>integrationtests</module>
      <module>integrationtests/wildfly-modules</module>
      <module>integrationtests/as-lucene-directory</module>
      <module>integrationtests/endpoints-interop-it</module>
      <module>integrationtests/cdi-jcache-it</module>
      <module>integrationtests/security-it</module>
      <module>integrationtests/security-manager-it</module>
      <module>integrationtests/osgi</module>
      <module>integrationtests/elasticsearch-indexmanager-it</module>
      <module>integrationtests/cdi-weld-se-it</module>
      <module>integrationtests/all-embedded-it</module>
      <module>integrationtests/all-embedded-query-it</module>
      <module>integrationtests/all-remote-it</module>
      <module>integrationtests/spring-boot-it</module>
      <module>client/marshaller</module>
      <module>hibernate</module>
   </modules>
   <properties>
      <!-- Semantic versioning defaults. -->
      <bnd.consumer.policy>$&lt;range;[==,+)&gt;</bnd.consumer.policy>
      <bnd.provider.policy>$&lt;range;[==,=+)&gt;</bnd.provider.policy>
      <buildDirectory>target</buildDirectory>
      <defaultExcludedJUnitGroups>org.infinispan.commons.test.categories.Unstable,org.infinispan.commons.test.categories.Stress,org.infinispan.commons.test.categories.Profiling</defaultExcludedJUnitGroups>
      <!-- unstable and stress because we can have them inside a functional class, for example -->
      <defaultExcludedTestNGGroups>unstable,stress</defaultExcludedTestNGGroups>
      <defaultTestNGGroups>functional,unit,xsite,arquillian</defaultTestNGGroups>
      <dir.ispn>../</dir.ispn>
      <dir.jacoco>${session.executionRootDirectory}/jacoco/</dir.jacoco>
      <dir.jacoco.merged>../jacoco/merged/</dir.jacoco.merged>
      <dir.jacoco.report>../jacoco/report/</dir.jacoco.report>
      <testjvm.commonArgs>-XX:+UseG1GC -XX:-TieredCompilation -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${user.dir}</testjvm.commonArgs>
      <testjvm.jigsawArgs />
      <forkJvmArgs>-Xmx1G ${testjvm.commonArgs}</forkJvmArgs>
      <infinispan.module-suffix>-${project.artifactId}</infinispan.module-suffix>
      <ansi.strip/>
      <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
      <infinispan.test.parallel.threads>8</infinispan.test.parallel.threads>
      <skipArtifactUpload>false</skipArtifactUpload>
      <upload.username>infinispan</upload.username>
      <upload.host>filemgmt.jboss.org</upload.host>
      <upload.downloadsDir>${upload.username}@${upload.host}:/downloads_htdocs/infinispan/${project.version}</upload.downloadsDir>
      <upload.docsPath>/docs_htdocs/infinispan/${infinispan.base.version}</upload.docsPath>
      <upload.docsDir>${upload.username}@${upload.host}:${upload.docsPath}</upload.docsDir>
      <upload.keyFile>${env.HOME}/.ssh/ispn_release</upload.keyFile>
      <upload.schemaDir>${upload.username}@${upload.host}:/schema_htdocs/infinispan</upload.schemaDir>
      <junitListener>org.infinispan.commons.test.JUnitTestListener</junitListener>
      <m2e.apt.activation>jdt_apt</m2e.apt.activation>
      <module.metadata.isCoreModule>false</module.metadata.isCoreModule>
      <module.skipComponentMetaDataProcessing>true</module.skipComponentMetaDataProcessing>
      <module.skipTestComponentMetaDataProcessing>true</module.skipTestComponentMetaDataProcessing>
      <module.skipMavenRemoteResource>false</module.skipMavenRemoteResource>
      <module.skipCopyDependencies>true</module.skipCopyDependencies>
      <module.skipSupportModuleDeployment>true</module.skipSupportModuleDeployment>
      <packaging>jar</packaging>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <testNGListeners>org.infinispan.commons.test.TestNGTestListener,org.infinispan.commons.test.PolarionJUnitXMLReporter</testNGListeners>
      <log4j.configurationFile>${infinispan.root}/log4j2.xml</log4j.configurationFile>
      <uberjar.deps.optional>true</uberjar.deps.optional>
   </properties>

   <dependencyManagement>
      <dependencies>

         <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-bom</artifactId>
            <version>${project.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>

      </dependencies>
   </dependencyManagement>

   <dependencies>
      <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>net.jcip</groupId>
         <artifactId>jcip-annotations</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.jboss</groupId>
         <artifactId>jboss-transaction-spi</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.jboss.narayana.jta</groupId>
         <artifactId>narayana-jta</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging-processor</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>javax.annotation</groupId>
         <artifactId>javax.annotation-api</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.jacoco</groupId>
         <artifactId>org.jacoco.agent</artifactId>
         <classifier>runtime</classifier>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-license</artifactId>
         <version>${project.version}</version>
         <scope>provided</scope>
      </dependency>
   </dependencies>

   <build>
      <directory>${buildDirectory}</directory>
      <pluginManagement>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>
               <version>${version.maven.source}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-plugin-plugin</artifactId>
               <version>${version.maven-plugin-plugin}</version>
            </plugin>
            <plugin>
               <groupId>org.wildfly.build</groupId>
               <artifactId>wildfly-server-provisioning-maven-plugin</artifactId>
               <version>${version.org.wildfly.build-tools}</version>
            </plugin>
            <plugin>
               <groupId>org.wildfly.build</groupId>
               <artifactId>wildfly-feature-pack-build-maven-plugin</artifactId>
               <version>${version.org.wildfly.build-tools}</version>
            </plugin>
            <plugin>
               <groupId>org.antlr</groupId>
               <artifactId>antlr3-maven-plugin</artifactId>
               <version>${version.maven.antlr3}</version>
               <executions>
                  <execution>
                     <goals>
                        <goal>antlr</goal>
                     </goals>
                  </execution>
               </executions>
               <dependencies>
                  <dependency>
                     <groupId>org.antlr</groupId>
                     <artifactId>antlr</artifactId>
                     <version>${version.antlr}</version>
                  </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-clean-plugin</artifactId>
               <version>2.6.1</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.5.2</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-help-plugin</artifactId>
               <version>2.1.1</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.8.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-scm-plugin</artifactId>
               <version>1.9.5</version>
               <configuration>
                  <tag>${project.version}</tag>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>versions-maven-plugin</artifactId>
               <version>2.5</version>
               <configuration>
                  <generateBackupPoms>false</generateBackupPoms>
                  <processAllModules>true</processAllModules>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.sonatype.plugins</groupId>
               <artifactId>nexus-staging-maven-plugin</artifactId>
               <version>1.6.8</version>
               <configuration>
                  <autoReleaseAfterClose>false</autoReleaseAfterClose>
                  <stagingDescription>${infinispan.brand.name} ${project.version} release</stagingDescription>
                  <nexusUrl>${jboss.releases.nexus.url}</nexusUrl>
                  <serverId>${jboss.releases.repo.id}</serverId>
                  <stagingProfileId>2161b7b8da0080</stagingProfileId>
                  <stagingRepositoryId>${stagingRepositoryId}</stagingRepositoryId>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-antrun-plugin</artifactId>
               <version>${version.maven.antrun}</version>
               <dependencies>
                  <dependency>
                     <groupId>org.apache.ant</groupId>
                     <artifactId>ant</artifactId>
                     <version>${version.ant}</version>
                  </dependency>
                  <dependency>
                     <groupId>org.apache.ant</groupId>
                     <artifactId>ant-jsch</artifactId>
                     <version>${version.ant}</version>
                  </dependency>
                  <dependency>
                     <groupId>org.codehaus.groovy</groupId>
                     <artifactId>groovy-all</artifactId>
                     <version>${version.groovy}</version>
                  </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <groupId>org.apache.felix</groupId>
               <artifactId>maven-bundle-plugin</artifactId>
               <version>${version.maven.bundle}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-assembly-plugin</artifactId>
               <version>3.1.0</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-dependency-plugin</artifactId>
               <version>3.1.1</version>
            </plugin>
            <plugin>
               <groupId>org.apache.servicemix.tooling</groupId>
               <artifactId>depends-maven-plugin</artifactId>
               <version>1.2</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-failsafe-plugin</artifactId>
               <version>${version.maven.surefire}</version>
               <configuration>
                  <systemPropertyVariables>
                     <!-- this is picked up in the log4j xml which prepends it to each module's log file-->
                     <infinispan.module-suffix>${infinispan.module-suffix}</infinispan.module-suffix>
                     <ansi.strip>${ansi.strip}</ansi.strip>
                  </systemPropertyVariables>
                  <argLine>${forkJvmArgs} ${testjvm.jigsawArgs}</argLine>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>3.0.0-M1</version>
               <configuration>
                  <!--
                  The javadoc plugin only runs in the javadoc and rhq-plugin modules.
                  But with the default configuration it tries to run a new maven instance
                  in every dependency, in order to generate the apidocs there as well.
                  (http://maven.apache.org/plugins-archives/maven-javadoc-plugin-2.10.3/javadoc-mojo.html#detectOfflineLinks)
                  -->
                  <detectOfflineLinks>false</detectOfflineLinks>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-resources-plugin</artifactId>
               <version>3.1.0</version>
               <configuration>
                  <encoding>UTF-8</encoding>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-pmd-plugin</artifactId>
               <!-- See also reporting plugins -->
               <version>3.9</version>
               <configuration>
                  <minimumTokens>100</minimumTokens>
                  <targetJdk>${version.java}</targetJdk>
                  <linkXref>false</linkXref>
                  <sourceEncoding>utf-8</sourceEncoding>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-shade-plugin</artifactId>
               <version>${version.maven.shade}</version>
               <dependencies>
                  <dependency>
                     <groupId>org.ow2.asm</groupId>
                     <artifactId>asm</artifactId>
                     <version>${version.asm.ow2}</version>
                  </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-jar-plugin</artifactId>
               <version>${version.maven.jar}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>${version.maven.surefire}</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>3.1.0</version>
               <configuration>
                  <attachClasses>false</attachClasses>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>appassembler-maven-plugin</artifactId>
               <version>1.0</version>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>build-helper-maven-plugin</artifactId>
               <version>${version.maven.buildhelper}</version>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>exec-maven-plugin</artifactId>
               <version>1.6.0</version>
            </plugin>
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>ideauidesigner-maven-plugin</artifactId>
               <version>1.0-beta-1</version>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-checkstyle-plugin</artifactId>
               <version>${version.checkstyle.maven-plugin}</version>
               <dependencies>
                  <dependency>
                     <groupId>com.puppycrawl.tools</groupId>
                     <artifactId>checkstyle</artifactId>
                     <version>${version.checkstyle}</version>
                  </dependency>
                  <dependency>
                     <groupId>org.infinispan</groupId>
                     <artifactId>infinispan-checkstyle</artifactId>
                     <version>${project.version}</version>
                  </dependency>
               </dependencies>
               <configuration>
                  <!-- Location is relative to the classpath -->
                  <configLocation>checkstyle.xml</configLocation>
                  <consoleOutput>true</consoleOutput>
                  <failsOnError>true</failsOnError>
                  <violationSeverity>error</violationSeverity>
                  <includeTestSourceDirectory>true</includeTestSourceDirectory>
                  <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                  <linkXRef>false</linkXRef>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.wildfly.plugins</groupId>
               <artifactId>wildfly-maven-plugin</artifactId>
               <version>${version.org.wildfly.maven-plugin}</version>
               <dependencies>
                  <dependency>
                     <groupId>org.wildfly.core</groupId>
                     <artifactId>wildfly-cli</artifactId>
                     <version>${version.org.wildfly.core}</version>
                     <exclusions>
                        <exclusion>
                           <groupId>sun.jdk</groupId>
                           <artifactId>jconsole</artifactId>
                        </exclusion>
                     </exclusions>
                  </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <groupId>com.github.alexcojocaru</groupId>
               <artifactId>elasticsearch-maven-plugin</artifactId>
               <version>${version.elasticsearch.plugin}</version>
            </plugin>
            <plugin>
               <groupId>org.apache.karaf.tooling</groupId>
               <artifactId>karaf-maven-plugin</artifactId>
               <version>${version.karaf-maven-plugin}</version>
               <configuration>
                  <descriptors>
                     <descriptor>file://${project.build.directory}/classes/features.xml</descriptor>
                     <!-- ideally, those profiles should be referenced in the features file -->
                     <descriptor>mvn:org.apache.karaf.features/framework/${version.karaf}/xml/features</descriptor>
                     <descriptor>mvn:org.apache.karaf.features/enterprise/${version.karaf}/xml/features</descriptor>
                  </descriptors>
                  <distribution>org.apache.karaf.features:framework</distribution>
                  <javase>${version.java}</javase>
                  <framework>
                     <feature>framework</feature>
                  </framework>
               </configuration>
               <executions>
                  <execution>
                     <id>validate</id>
                     <phase>install</phase>
                     <goals>
                        <goal>verify</goal>
                     </goals>
                  </execution>
               </executions>
               <dependencies>
                  <dependency>
                     <groupId>org.apache.maven.wagon</groupId>
                     <artifactId>wagon-http-lightweight</artifactId>
                     <version>2.8</version>
                  </dependency>
                  <dependency>
                     <groupId>javax.activation</groupId>
                     <artifactId>activation</artifactId>
                     <version>1.1.1</version>
                  </dependency>
                  <dependency>
                     <groupId>org.glassfish.jaxb</groupId>
                     <artifactId>jaxb-runtime</artifactId>
                     <version>${version.jaxb}</version>
                  </dependency>
               </dependencies>
            </plugin>
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>${version.maven-compiler-plugin}</version>
               <configuration>
                  <source>${version.java}</source>
                  <target>${version.java}</target>
                  <encoding>UTF-8</encoding>
                  <excludes>
                     <exclude>**/package-info.java</exclude>
                  </excludes>
                  <compilerArgument>-AtranslationFilesPath=${project.basedir}/target/generated-translation-files</compilerArgument>
               </configuration>
            </plugin>
            <plugin>
               <groupId>kr.motd.maven</groupId>
               <artifactId>os-maven-plugin</artifactId>
               <version>1.4.1.Final</version>
            </plugin>
         </plugins>
      </pluginManagement>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>3.0.0-M1</version>
            <executions>
               <execution>
                  <id>enforce-java</id>
                  <goals>
                     <goal>enforce</goal>
                  </goals>
                  <configuration>
                     <rules>
                        <requireJavaVersion>
                           <version>[${version.java},)</version>
                        </requireJavaVersion>
                        <requireMavenVersion>
                           <version>[3.2.1,)</version>
                        </requireMavenVersion>
                     </rules>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>timestamp-property</id>
                  <goals>
                     <goal>timestamp-property</goal>
                  </goals>
                  <phase>validate</phase>
                  <configuration>
                     <name>current.year</name>
                     <pattern>yyyy</pattern>
                     <locale>en_US</locale>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
               <execution>
                  <phase>validate</phase>
                  <goals>
                     <goal>create</goal>
                  </goals>
                  <configuration>
                     <doCheck>false</doCheck>
                     <doUpdate>false</doUpdate>
                     <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-invoker-plugin</artifactId>
            <version>${version.maven.invoker}</version>
         </plugin>
         <plugin>
            <artifactId>maven-remote-resources-plugin</artifactId>
            <version>${version.maven.remote.resource}</version>
            <executions>
               <execution>
                  <id>attach-license</id>
                  <goals>
                     <goal>process</goal>
                  </goals>
                  <inherited>true</inherited>
                  <configuration>
                     <resourceBundles>
                        <resourceBundle>org.infinispan:infinispan-license:${project.version}</resourceBundle>
                     </resourceBundles>
                     <skip>${module.skipMavenRemoteResource}</skip>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
               <instructions>
                  <Bundle-DocURL>http://www.infinispan.org/</Bundle-DocURL>
                  <Export-Package>${project.groupId}.*;version=${project.version};-split-package:=error</Export-Package>
                  <_consumer-policy>${bnd.consumer.policy}</_consumer-policy>
                  <_provider-policy>${bnd.provider.policy}</_provider-policy>
                  <Include-Resource>{maven-resources}</Include-Resource>
                  <Implementation-Build-Commit-Id>${buildNumber}</Implementation-Build-Commit-Id>
                  <Implementation-Build-Branch>${scmBranch}</Implementation-Build-Branch>
               </instructions>
            </configuration>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.7</version>
            <configuration>
               <downloadSources>true</downloadSources>
               <buildOutputDirectory>${basedir}/eclipse-output</buildOutputDirectory>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <executions>
               <execution>
                  <id>checkstyle</id>
                  <phase>verify</phase>
                  <goals>
                     <goal>checkstyle</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <!-- IntelliJ project file generation -->
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-idea-plugin</artifactId>
            <version>2.2</version>
            <configuration>
               <downloadSources>true</downloadSources>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
               <encoding>UTF-8</encoding>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
               <execution>
                  <!-- Scan module for components and persist these into a data file, for use at runtime -->
                  <id>serialize_component_metadata</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <classpathScope>compile</classpathScope>
                     <skip>${module.skipComponentMetaDataProcessing}</skip>
                     <mainClass>org.infinispan.factories.components.ComponentMetadataPersister</mainClass>
                     <arguments>
                        <argument>${project.build.outputDirectory}</argument>
                        <argument>${project.build.outputDirectory}/${project.artifactId}-component-metadata.dat</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>infinispan.isCoreModule</key>
                           <value>${module.metadata.isCoreModule}</value>
                        </systemProperty>
                        <systemProperty>
                           <key>org.jboss.logging.provider</key>
                           <value>jdk</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
               <execution>
                  <id>serialize_test_component_metadata</id>
                  <phase>process-test-classes</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <skip>${module.skipTestComponentMetaDataProcessing}</skip>
                     <mainClass>org.infinispan.factories.components.ComponentMetadataPersister</mainClass>
                     <classpathScope>test</classpathScope>
                     <arguments>
                        <argument>${project.build.testOutputDirectory}</argument>
                        <argument>${project.build.testOutputDirectory}/${project.artifactId}-tests-component-metadata.dat</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>org.jboss.logging.provider</key>
                           <value>jdk</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${version.maven.jar}</version>
            <executions>
               <execution>
                  <id>build-test-jar</id>
                  <goals>
                     <goal>test-jar</goal>
                  </goals>
                  <configuration>
                     <archive>
                        <manifest>
                           <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                           <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                     </archive>
                     <excludes>
                        <excludes>**/jbossts-properties.xml</excludes>
                     </excludes>
                  </configuration>
               </execution>
            </executions>
            <configuration>
               <archive>
                  <manifest>
                     <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                     <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                     <mainClass>org.infinispan.Version</mainClass>
                  </manifest>
                  <manifestEntries>
                     <Implementation-Codename>${infinispan.codename}</Implementation-Codename>
                  </manifestEntries>
               </archive>
               <excludes>
                  <exclude>**/log4j.xml</exclude>
                  <exclude>**/*.bat</exclude>
                  <exclude>**/*.sh</exclude>
                  <exclude>**/*.txt</exclude>
               </excludes>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
               <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <parallel>tests</parallel>
               <threadCount>${infinispan.test.parallel.threads}</threadCount>
               <forkCount>1</forkCount>
               <reuseForks>true</reuseForks>
               <groups>${defaultTestNGGroups}</groups>
               <excludedGroups>${defaultExcludedTestNGGroups}</excludedGroups>
               <disableXmlReport>true</disableXmlReport>
               <useFile>false</useFile>
               <systemPropertyVariables>
                  <infinispan.test.jgroups.protocol>${infinispan.test.jgroups.protocol}</infinispan.test.jgroups.protocol>
                  <jgroups.bind_addr>127.0.0.1</jgroups.bind_addr>
                  <jgroups.join_timeout>2000</jgroups.join_timeout>
                  <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
                  <log4j.configurationFile>${log4j.configurationFile}</log4j.configurationFile>
                  <build.directory>${project.build.directory}</build.directory>
                  <com.arjuna.ats.arjuna.common.propertiesFile>test-jbossts-properties.xml</com.arjuna.ats.arjuna.common.propertiesFile>

                  <!-- this is picked up in the log4j xml which prepends it to each module's log file-->
                  <infinispan.module-suffix>${infinispan.module-suffix}</infinispan.module-suffix>
                  <ansi.strip>${ansi.strip}</ansi.strip>
                  <!-- Log the correct thread name after we call Thread.setName(),
                       see https://issues.apache.org/jira/browse/LOG4J2-2052 -->
                  <AsyncLogger.ThreadNameStrategy>UNCACHED</AsyncLogger.ThreadNameStrategy>
               </systemPropertyVariables>
               <trimStackTrace>false</trimStackTrace>
               <properties>
                  <!-- Deactivate the default listeners which may cause OOME. Jenkins uses the surefire generated XML file. -->
                  <usedefaultlisteners>false</usedefaultlisteners>
                  <listener>${testNGListeners}</listener>
               </properties>
               <argLine>${forkJvmArgs} ${testjvm.jigsawArgs}</argLine>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
               <execution>
                  <id>generate-blueprint</id>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <phase>none</phase>
                  <configuration>
                     <target>
                        <property name="classpath" refid="maven.compile.classpath"/>
                        <java classname="org.infinispan.commons.util.BlueprintGenerator" failonerror="true"
                              fork="false">
                           <arg value="${project.build.outputDirectory}"/>
                           <classpath>
                              <pathelement path="${project.build.outputDirectory}"/>
                              <pathelement path="${classpath}"/>
                           </classpath>
                        </java>
                     </target>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
   <reporting>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.9.0</version>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>${version.maven.surefire}</version>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.5.2</version>
            <configuration>
               <onlyAnalyze>org.infinispan.*</onlyAnalyze>
               <xmlOutput>true</xmlOutput>
               <xmlOutputDirectory>target</xmlOutputDirectory>
            </configuration>
         </plugin>
      </plugins>
   </reporting>

   <profiles>

      <profile>
         <!-- nexus-staging-maven-plugin blocks maven-deploy-plugin -->
         <id>nexus-staging</id>
         <activation>
            <property><name>!skipNexusStaging</name></property>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.sonatype.plugins</groupId>
                  <artifactId>nexus-staging-maven-plugin</artifactId>
                  <extensions>true</extensions>
               </plugin>
            </plugins>
         </build>
      </profile>

      <profile>
         <id>m2e</id>
         <activation>
            <property>
               <name>m2e.version</name>
            </property>
         </activation>

         <properties>
            <!-- Eclipse doesn't handle well the dependency on uberjars for the modules which use them (e.g. demos).
                 Mark the dependencies of the uberjar modules as not-optional when inside Eclipse. -->
            <uberjar.deps.optional>false</uberjar.deps.optional>
         </properties>

         <build>
            <pluginManagement>
               <plugins>
                  <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                  <plugin>
                     <groupId>org.eclipse.m2e</groupId>
                     <artifactId>lifecycle-mapping</artifactId>
                     <version>1.0.0</version>
                     <configuration>
                        <lifecycleMappingMetadata>
                           <pluginExecutions>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.felix</groupId>
                                    <artifactId>maven-bundle-plugin</artifactId>
                                    <versionRange>[2.4.0,)</versionRange>
                                    <goals>
                                       <goal>bundle</goal>
                                       <goal>cleanVersions</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-antrun-plugin</artifactId>
                                    <versionRange>[1.3,)</versionRange>
                                    <goals>
                                       <goal>run</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <versionRange>[2.6,)</versionRange>
                                    <goals>
                                       <goal>copy</goal>
                                       <goal>copy-dependencies</goal>
                                       <goal>unpack</goal>
                                       <goal>unpack-dependencies</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-enforcer-plugin</artifactId>
                                    <versionRange>[1.3.1,)</versionRange>
                                    <goals>
                                       <goal>enforce</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-invoker-plugin</artifactId>
                                    <versionRange>[1.8,)</versionRange>
                                    <goals>
                                       <goal>install</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-javadoc-plugin</artifactId>
                                    <versionRange>[2.8,)</versionRange>
                                    <goals>
                                       <goal>javadoc</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-remote-resources-plugin</artifactId>
                                    <versionRange>[1.1,)</versionRange>
                                    <goals>
                                       <goal>process</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.apache.servicemix.tooling</groupId>
                                    <artifactId>depends-maven-plugin</artifactId>
                                    <versionRange>[1.2,)</versionRange>
                                    <goals>
                                       <goal>generate-depends-file</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>exec-maven-plugin</artifactId>
                                    <versionRange>[1.0.2,)</versionRange>
                                    <goals>
                                       <goal>java</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                              <pluginExecution>
                                 <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>ideauidesigner-maven-plugin</artifactId>
                                    <versionRange>[1.0-beta-1,)</versionRange>
                                    <goals>
                                       <goal>javac2</goal>
                                    </goals>
                                 </pluginExecutionFilter>
                                 <action>
                                    <ignore />
                                 </action>
                              </pluginExecution>
                           </pluginExecutions>
                        </lifecycleMappingMetadata>
                     </configuration>
                  </plugin>
               </plugins>
            </pluginManagement>
         </build>
      </profile>
      <profile>
         <id>distribution</id>
         <modules>
            <module>documentation</module>
            <module>javadoc/doclets</module>
            <module>javadoc/javadoc-embedded</module>
            <module>javadoc/javadoc-remote</module>
            <module>javadoc/javadoc-all</module>
            <module>distribution</module>
         </modules>
         <properties>
            <skipTests>true</skipTests>
            <dependencies.excludeArtifactIds>infinispan-embedded,infinispan-embedded-query,infinispan-remote</dependencies.excludeArtifactIds>
            <dependencies.excludeGroupIds>org.infinispan,org.jgroups,org.jboss.marshalling,org.jboss.logging,net.jcip,org.kohsuke.metainf-services</dependencies.excludeGroupIds>
         </properties>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>create-classpath</id>
                        <phase>package</phase>
                        <goals>
                           <goal>build-classpath</goal>
                        </goals>
                        <configuration>
                           <skip>${module.skipCopyDependencies}</skip>
                           <includeScope>runtime</includeScope>
                           <excludeScope>test</excludeScope>
                           <excludeArtifactIds>${dependencies.excludeArtifactIds}</excludeArtifactIds>
                           <excludeGroupIds>${dependencies.excludeGroupIds}</excludeGroupIds>
                           <prefix>$ISPN_HOME/lib</prefix>
                           <outputFile>${project.build.directory}/runtime-classpath.txt</outputFile>
                           <silent>true</silent>
                        </configuration>
                     </execution>
                     <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                           <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                           <skip>${module.skipCopyDependencies}</skip>
                           <includeScope>runtime</includeScope>
                           <excludeScope>test</excludeScope>
                           <excludeGroupIds>${dependencies.excludeGroupIds}</excludeGroupIds>
                           <silent>true</silent>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>upload-schemas</id>
                        <phase>deploy</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <skip>${skipArtifactUpload}</skip>
                           <target>
                              <available file="${project.build.outputDirectory}/schema" type="dir" property="hasSchema"/>

                              <echo message="Uploading Schema files to ${upload.schemaDir}" if:set="hasSchema" xmlns:if="ant:if"/>
                              <scp todir="${upload.schemaDir}" keyfile="${upload.keyFile}" verbose="true" compressed="true" if:set="hasSchema" xmlns:if="ant:if">
                                 <fileset dir="${project.build.outputDirectory}/schema">
                                    <include name="*-${infinispan.core.schema.version}.xsd" />
                                 </fileset>
                              </scp>
                           </target>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <!-- Profile used to compile the default (Java 8) code with a Java 9 or later compiler -->
         <id>jigsaw</id>
         <activation>
            <jdk>[9,)</jdk>
         </activation>
         <properties>
            <!--
              java.lang, java.util, java.io, java.lang.invoke, java.lang, reflect, java.util.concurrent, java.time:
                core externalizers for JDK types
              java.nio, jdk.internal.ref, sun.nio.ch: Netty, server/hotrod
              com.sun.security.sasl: CRAM-MD5 mechanism, server/hotrod
              java.text, java.awt.font: XStream, server/rest
              java.security: Wildfly, server/integration/*
            -->
            <testjvm.jigsawargs>
               -Dsun.reflect.debugModuleAccessChecks=true
               --add-opens=java.base/java.lang=ALL-UNNAMED
               --add-opens=java.base/java.util=ALL-UNNAMED
               --add-opens=java.base/java.io=ALL-UNNAMED
               --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
               --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
               --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
               --add-opens=java.base/java.time=ALL-UNNAMED
               --add-opens=java.base/java.nio=ALL-UNNAMED
               --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED
               --add-exports=java.security.sasl/com.sun.security.sasl=ALL-UNNAMED
               --add-opens=java.base/java.text=ALL-UNNAMED
               --add-opens=java.desktop/java.awt.font=ALL-UNNAMED
               --add-opens=java.base/java.security=ALL-UNNAMED
               --add-exports=jdk.security.jgss/com.sun.security.sasl.gsskerb=ALL-UNNAMED
               --add-exports=java.base/sun.nio.ch=ALL-UNNAMED
               --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
               --add-exports=java.security.sasl/com.sun.security.sasl.digest=ALL-UNNAMED
               --add-exports=java.security.sasl/com.sun.security.sasl.ntlm=ALL-UNNAMED
               --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED
               --add-opens=java.management/javax.management=ALL-UNNAMED
               --add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
               --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
            </testjvm.jigsawargs>
         </properties>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>jdk-misc</id>
                        <phase>process-sources</phase>
                        <goals>
                           <goal>copy</goal>
                        </goals>
                        <configuration>
                           <!-- Download org.jboss:jdk-misc to the target directory -->
                           <artifactItems>
                              <artifactItem>
                                 <groupId>org.jboss</groupId>
                                 <artifactId>jdk-misc</artifactId>
                                 <version>2.Final</version>
                                 <type>jar</type>
                                 <overWrite>true</overWrite>
                                 <outputDirectory>${project.build.directory}</outputDirectory>
                                 <destFileName>jdk-misc.jar</destFileName>
                              </artifactItem>
                           </artifactItems>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <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>
                     <release>8</release>
                     <!-- Include a skeleton implementation of some classes removed in JDK10+ -->
                     <additionalClasspathElements>
                        <additionalClasspathElement>${project.build.directory}/jdk-misc.jar</additionalClasspathElement>
                     </additionalClasspathElements>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <!-- Profile used to compile Java 10-specific classes. It requires that the java10.home property points to a JDK 10 installation -->
         <id>jdk10-compile</id>
         <activation>
            <property>
               <name>java10.home</name>
            </property>
            <file>
               <exists>${basedir}/src/main/java10</exists>
            </file>
         </activation>
         <build>
            <plugins>

               <plugin>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>java10-compile</id>
                        <phase>compile</phase>
                        <goals>
                           <goal>compile</goal>
                        </goals>
                        <configuration>
                           <executable>${java10.home}/bin/javac</executable>
                           <release>10</release>
                           <compileSourceRoots>${project.basedir}/src/main/java10</compileSourceRoots>
                           <outputDirectory>${project.build.outputDirectory}/META-INF/versions/10</outputDirectory>
                           <additionalClasspathElements>
                              <additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
                           </additionalClasspathElements>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>java10-test</id>
                        <phase>test</phase>
                        <goals>
                           <goal>test</goal>
                        </goals>
                        <configuration>
                           <jvm>${java10.home}/bin/java</jvm>
                           <groups>org.infinispan.commons.test.categories.Java10</groups>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <artifactId>maven-jar-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>build-test-jar</id>
                        <goals>
                           <goal>test-jar</goal>
                        </goals>
                        <configuration>
                           <archive>
                              <manifestEntries>
                                 <Multi-Release>true</Multi-Release>
                              </manifestEntries>
                           </archive>
                        </configuration>
                     </execution>
                  </executions>

               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>jdk10-test-compile</id>
         <activation>
            <property>
               <name>java10.home</name>
            </property>
            <file>
               <exists>${basedir}/src/test/java10</exists>
            </file>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>java10-test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                           <goal>compile</goal>
                        </goals>
                        <configuration>
                           <release>10</release>
                           <compileSourceRoots>${project.basedir}/src/test/java10</compileSourceRoots>
                           <outputDirectory>${project.build.testOutputDirectory}/META-INF/versions/10</outputDirectory>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <executions>
                     <execution>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <artifactId>maven-jar-plugin</artifactId>
                  <configuration>
                     <archive>
                        <manifestEntries>
                           <Multi-Release>true</Multi-Release>
                        </manifestEntries>
                     </archive>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>pre-jigsaw</id>
         <activation>
            <file>
               <exists>{java.home}/../lib/tools.jar</exists>
            </file>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <dependencies>
                     <!-- Java 9 includes the compiler in the default module -->
                     <!-- So we only need the tools.jar dependency on Java 8 -->
                     <dependency>
                        <groupId>com.sun</groupId>
                        <artifactId>tools</artifactId>
                        <version>${java.version}</version>
                        <scope>system</scope>
                        <systemPath>${java.home}/../lib/tools.jar</systemPath>
                     </dependency>
                  </dependencies>
               </plugin>
            </plugins>
         </build>
      </profile>

      <profile>
         <id>extras</id>
         <activation>
            <activeByDefault>true</activeByDefault>
            <!-- activeByDefault is not enough to activate the profile in children projects -->
            <property>
               <name>maven.home</name>
            </property>
         </activation>
         <build>
            <plugins>
               <!-- Make sure we generate src jars too -->
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-source-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                           <goal>jar</goal>
                           <goal>test-jar</goal>
                        </goals>
                     </execution>
                  </executions>
                  <inherited>true</inherited>
               </plugin>
            </plugins>
         </build>
         <properties>
            <!-- By default create OSGI bundles -->
            <packaging>bundle</packaging>
         </properties>
      </profile>
      <profile>
         <id>test-CI</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
         <properties>
            <defaultTestNGGroups>functional,unit,xsite,arquillian</defaultTestNGGroups>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>test-functional</id>
         <properties>
            <defaultTestNGGroups>functional</defaultTestNGGroups>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>smoke</id>
         <properties>
            <defaultTestNGGroups>smoke</defaultTestNGGroups>
            <defaultJUnitGroups>org.infinispan.commons.test.categories.Smoke</defaultJUnitGroups>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>test-unstable</id>
         <properties>
            <defaultTestNGGroups>unstable</defaultTestNGGroups>
            <defaultJUnitGroups>org.infinispan.commons.test.categories.Unstable</defaultJUnitGroups>
            <!-- empty since we are not going to exclude any group -->
            <defaultExcludedTestNGGroups/>
            <defaultExcludedJUnitGroups/>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <configuration>
                     <systemPropertyVariables>
                        <log4j.configurationFile>log4j2-trace.xml</log4j.configurationFile>
                     </systemPropertyVariables>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>test-stress</id>
         <properties>
            <defaultTestNGGroups>stress</defaultTestNGGroups>
            <defaultJUnitGroups>org.infinispan.commons.test.categories.Stress</defaultJUnitGroups>
            <defaultExcludedTestNGGroups/>
            <defaultExcludedJUnitGroups/>
            <infinispan.test.parallel.threads>1</infinispan.test.parallel.threads>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>test-unit</id>
         <properties>
            <defaultTestNGGroups>unit</defaultTestNGGroups>
         </properties>
      </profile>
      <profile>
         <id>test-jgroups</id>
         <properties>
            <defaultTestNGGroups>jgroups</defaultTestNGGroups>
         </properties>
      </profile>
      <profile>
         <id>test-transaction</id>
         <properties>
            <defaultTestNGGroups>transaction</defaultTestNGGroups>
         </properties>
      </profile>
      <profile>
         <id>fail-all-tests</id>
         <properties>
            <testNGListener>
               org.infinispan.commons.test.TestNGTestListener,org.infinispan.test.fwk.FailAllTestNGHook
            </testNGListener>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>fail-all-tests-setup</id>
         <properties>
            <testNGListener>
               org.infinispan.commons.test.TestNGTestListener,org.infinispan.test.fwk.FailAllSetupTestNGHook
            </testNGListener>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>customForkJvmArgs</id>
         <activation>
            <activeByDefault>false</activeByDefault>
            <property>
               <name>env.MAVEN_FORK_OPTS</name>
            </property>
         </activation>
         <properties>
            <forkJvmArgs>${env.MAVEN_FORK_OPTS}</forkJvmArgs>
         </properties>
      </profile>

      <!-- Only one of the root-dirX profiles will be active, and it will set infinispan.root
           to $REACTOR_ROOT/etc/log4j2.xml -->
      <profile>
         <id>root-dir1</id>
         <activation>
            <file>
               <exists>${basedir}/../etc/log4j2.xml</exists>
            </file>
         </activation>
         <properties>
            <infinispan.root>${basedir}/../etc</infinispan.root>
         </properties>
      </profile>
      <profile>
         <id>root-dir2</id>
         <activation>
            <file>
               <exists>${basedir}/../../etc/log4j2.xml</exists>
            </file>
         </activation>
         <properties>
            <infinispan.root>${basedir}/../../etc</infinispan.root>
         </properties>
      </profile>
      <profile>
         <id>root-dir3</id>
         <activation>
            <file>
               <exists>${basedir}/../../../etc/log4j2.xml</exists>
            </file>
         </activation>
         <properties>
            <infinispan.root>${basedir}/../../../etc</infinispan.root>
         </properties>
      </profile>
      <profile>
         <id>root-dir4</id>
         <activation>
            <file>
               <exists>${basedir}/../../../../etc/log4j2.xml</exists>
            </file>
         </activation>
         <properties>
            <infinispan.root>${basedir}/../../../../etc</infinispan.root>
         </properties>
      </profile>
      <profile>
         <id>nonParallel</id>
         <activation>
            <activeByDefault>false</activeByDefault>
         </activation>
         <properties>
            <infinispan.test.parallel.threads>1</infinispan.test.parallel.threads>
            <infinispan.test.jgroups.protocol>tcp</infinispan.test.jgroups.protocol>
         </properties>
      </profile>
      <profile>
         <id>traceTests</id>
         <activation>
            <activeByDefault>false</activeByDefault>
         </activation>
         <properties>
            <log4j.configurationFile>${infinispan.root}/log4j2-trace.xml</log4j.configurationFile>
         </properties>
      </profile>
      <profile>
         <id>coverage</id>

         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <configuration>
                     <argLine combine.self="override">${forkJvmArgs} ${jacoco.agent.argLine}</argLine>
                  </configuration>
               </plugin>

               <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>properties-maven-plugin</artifactId>
                  <version>1.0.0</version>
                  <executions>
                     <!-- Copy the ant tasks jar. Needed for ts.jacoco.report-ant . -->
                     <execution>
                        <goals>
                           <goal>set-system-properties</goal>
                        </goals>
                        <configuration>
                           <properties>
                              <property>
                                 <name>jacoco.reportPath</name>
                                 <value>${session.executionRootDirectory}/jacoco</value>
                              </property>
                           </properties>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>

               <!-- Starting jacoco agent for recording code coverage. -->
               <plugin>
                  <groupId>org.jacoco</groupId>
                  <artifactId>jacoco-maven-plugin</artifactId>
                  <version>${version.jacoco}</version>
                  <executions>
                     <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                           <goal>prepare-agent</goal>
                        </goals>
                     </execution>
                  </executions>
                  <configuration>
                     <propertyName>jacoco.agent.argLine</propertyName>
                     <destFile>${dir.jacoco}/${project.artifactId}.exec</destFile>
                     <excludes>
                        <exclude>**/logging/**</exclude>
                     </excludes>
                  </configuration>
               </plugin>
               <!-- Overriding surefire configuration, for attaching jacoco agent to command line. -->
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <dependencies>
                     <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant</artifactId>
                        <version>${version.ant}</version>
                     </dependency>
                     <dependency>
                        <groupId>ant-contrib</groupId>
                        <artifactId>ant-contrib</artifactId>
                        <version>${version.ant-contrib}</version>
                        <exclusions>
                           <exclusion>
                              <groupId>ant</groupId>
                              <artifactId>ant</artifactId>
                           </exclusion>
                        </exclusions>
                     </dependency>
                     <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-nodeps</artifactId>
                        <version>${version.ant}</version>
                     </dependency>
                  </dependencies>
                  <executions>
                     <execution>
                        <id>copy-generated-classes</id>
                        <phase>test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <target>
                                 <available file="${project.build.directory}/classes" type="dir" property="hasClasses"/>
                                 <echo message="Copying test classes to jacoco folder" if:set="hasClasses" xmlns:if="ant:if"/>
                                 <copydir dest="${jacoco.reportPath}/classes"
                                          src="${project.build.directory}/classes"
                                          if:set="hasClasses" xmlns:if="ant:if"/>
                           </target>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>jacocoReport</id>

         <build>
            <plugins>
               <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>properties-maven-plugin</artifactId>
                  <version>1.0.0</version>
                  <executions>
                     <execution>
                        <goals>
                           <goal>set-system-properties</goal>
                        </goals>
                        <configuration>
                           <properties>
                              <property>
                                 <name>jacoco.reportPath</name>
                                 <value>${session.executionRootDirectory}/jacoco</value>
                              </property>
                           </properties>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>

               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>delete-existing-jacoco-report</id>
                        <phase>initialize</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <target>
                              <echo>Deleting existing Jacoco Report Directory.</echo>
                              <delete dir="${dir.jacoco.report}"/>
                              <delete dir="${dir.jacoco.merged}"/>
                              <delete dir="${project.build.directory}/classes"/>
                              <echo>Copying the generated classes file to ${project.build.directory}/classes
                              </echo>
                              <copydir dest="${project.build.directory}/classes"
                                       src="${jacoco.reportPath}/classes"/>
                           </target>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>

               <plugin>
                  <groupId>org.codehaus.mojo</groupId>
                  <artifactId>build-helper-maven-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                           <goal>add-source</goal>
                        </goals>
                        <configuration>
                           <sources>
                              <source>${dir.ispn}/atomic-factory/src/main/java</source>
                              <source>${dir.ispn}/cdi/common/src/main/java</source>
                              <source>${dir.ispn}/cdi/embedded/src/main/java</source>
                              <source>${dir.ispn}/cdi/remote/src/main/java</source>
                              <source>${dir.ispn}/checkstyle/src/main/java</source>
                              <source>${dir.ispn}/cli/cli-client/src/main/java</source>
                              <source>${dir.ispn}/cli/cli-interpreter/src/main/java</source>
                              <source>${dir.ispn}/client/hotrod-client/src/main/java</source>
                              <source>${dir.ispn}/commons/src/main/java</source>
                              <source>${dir.ispn}/commons-test/src/main/java</source>
                              <source>${dir.ispn}/core/src/main/java</source>
                              <source>${dir.ispn}/demos/distexec/src/main/java</source>
                              <source>${dir.ispn}/demos/gridfs-webdav//src/main/java</source>
                              <source>${dir.ispn}/demos/gui/src/main/java</source>
                              <source>${dir.ispn}/demos/lucene-directory-demo/src/main/java</source>
                              <source>${dir.ispn}/extended-statistics/src/main/java</source>
                              <source>${dir.ispn}/jcache/commons/src/main/java</source>
                              <source>${dir.ispn}/jcache/embedded/src/main/java</source>
                              <source>${dir.ispn}/jcache/remote/src/main/java</source>
                              <source>${dir.ispn}/lucene/directory-provider/src/main/java</source>
                              <source>${dir.ispn}/lucene/lucene-directory/src/main/java</source>
                              <source>${dir.ispn}/object-filter/src/main/java</source>
                              <source>${dir.ispn}/osgi/src/main/java</source>
                              <source>${dir.ispn}/persistence/cli/src/main/java</source>
                              <source>${dir.ispn}/persistence/jdbc/src/main/java</source>
                              <source>${dir.ispn}/persistence/jpa/src/main/java</source>
                              <source>${dir.ispn}/persistence/leveldb/src/main/java</source>
                              <source>${dir.ispn}/persistence/remote/src/main/java</source>
                              <source>${dir.ispn}/persistence/rest/src/main/java</source>
                              <source>${dir.ispn}/persistence/rocksdb/src/main/java</source>
                              <source>${dir.ispn}/persistence/soft-index/src/main/java</source>
                              <source>${dir.ispn}/query/src/main/java</source>
                              <source>${dir.ispn}/query-dsl/src/main/java</source>
                              <source>${dir.ispn}/remote-query/remote-query-client/src/main/java</source>
                              <source>${dir.ispn}/remote-query/remote-query-server/src/main/java</source>
                              <source>${dir.ispn}/scripting/src/main/java</source>
                              <source>${dir.ispn}/spring/spring/src/main/java</source>
                              <source>${dir.ispn}/spring/spring4/spring4-common/src/main/java</source>
                              <source>${dir.ispn}/spring/spring4/spring4-embedded/src/main/java</source>
                              <source>${dir.ispn}/spring/spring4/spring4-remote/src/main/java</source>
                              <source>${dir.ispn}/tasks/src/main/java</source>
                              <source>${dir.ispn}/tasks-api/src/main/java</source>
                              <source>${dir.ispn}/tools/src/main/java</source>
                              <source>${dir.ispn}/tree/src/main/java</source>
                           </sources>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>

               <plugin>
                  <groupId>org.jacoco</groupId>
                  <artifactId>jacoco-maven-plugin</artifactId>
                  <version>${version.jacoco}</version>
                  <executions>
                     <execution>
                        <id>default-report</id>
                        <goals>
                           <goal>report</goal>
                        </goals>
                        <phase>install</phase>
                     </execution>
                     <execution>
                        <id>default-merge</id>
                        <goals>
                           <goal>merge</goal>
                        </goals>
                        <configuration>
                           <fileSets>
                              <fileSet>
                                 <directory>${dir.jacoco}</directory>
                                 <includes>
                                    <include>*.exec</include>
                                 </includes>
                              </fileSet>
                           </fileSets>
                           <destFile>${dir.jacoco.merged}/jacoco.exec</destFile>
                        </configuration>
                     </execution>
                  </executions>
                  <configuration>
                     <dataFile>${dir.jacoco.merged}/jacoco.exec</dataFile>
                     <outputDirectory>${dir.jacoco.report}</outputDirectory>
                     <excludes>
                        <exclude>**/logging/**</exclude>
                     </excludes>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>owasp</id>
            <build>
               <plugins>
                  <plugin>
                     <groupId>org.owasp</groupId>
                     <artifactId>dependency-check-maven</artifactId>
                     <version>${version.owasp-dependency-check-plugin}</version>
                     <executions>
                        <execution>
                           <goals>
                              <goal>aggregate</goal>
                           </goals>
                        </execution>
                    </executions>
                  </plugin>
               </plugins>
             </build>
      </profile>
   </profiles>
</project>
