<?xml version="1.0" encoding="UTF-8"?>
<!--
 ~ Hibernate OGM, Domain model persistence for NoSQL datastores
 ~
 ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later
 ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.hibernate.ogm</groupId>
        <artifactId>hibernate-ogm-bom</artifactId>
        <version>5.4.1.Final</version>
        <relativePath>bom/pom.xml</relativePath>
    </parent>

    <artifactId>hibernate-ogm-parent</artifactId>
    <packaging>pom</packaging>

    <name>Hibernate OGM Aggregator</name>
    <description>Hibernate OGM Aggregator POM</description>

    <modules>
        <module>bom</module>
        <module>core</module>
        <!-- <module>infinispan</module> Is only enabled when not running in Java 9: see the profiles section-->
        <!-- <module>infinispan-remote</module> Is only enabled when not running in Java 9: see the profiles section-->
        <module>mongodb</module>
        <module>neo4j</module>
        <module>jipijapa</module>
        <!-- <module>featurepack</module> WildFly feature pack modules require all of the above modules to be enabled -->
        <module>performance</module>
    </modules>

    <properties>

        <!-- Test dependencies -->

        <version.junit>4.12</version.junit>
        <version.io.takari.junit>1.2.7</version.io.takari.junit>
        <version.org.easytesting.fest-assert>1.4</version.org.easytesting.fest-assert>
        <version.org.mockito>1.9.5</version.org.mockito>
        <version.org.hamcrest>1.3</version.org.hamcrest>
        <version.com.google.guava>18.0</version.com.google.guava>
        <version.com.experlog.xapool>1.5.0</version.com.experlog.xapool>
        <version.org.skyscreamer.jsonassert>1.2.3</version.org.skyscreamer.jsonassert>
        <version.org.jboss.naming>7.1.0.Final</version.org.jboss.naming>
        <version.org.jboss.shrinkwrap>1.2.2</version.org.jboss.shrinkwrap>
        <version.org.jboss.arquillian>1.2.0.Final</version.org.jboss.arquillian>
        <version.org.wildfly.arquillian>2.1.0.Final</version.org.wildfly.arquillian>
        <version.org.openjdk.jmh>1.21</version.org.openjdk.jmh>
        <version.org.jboss.byteman>4.0.2</version.org.jboss.byteman>
        <version.org.jboss.spec.javax.ejb.jboss-ejb-api_3.2_spec>1.0.0.Final</version.org.jboss.spec.javax.ejb.jboss-ejb-api_3.2_spec>
        <version.javax.enterprise>2.0</version.javax.enterprise>

        <!--
             Following is the default jgroups mcast address.  If you find the testsuite runs very slowly, there
             may be problems with multicast on the interface JGroups uses by default on your machine. You can
             try to resolve setting 'jgroups.bind_addr' as a system-property to the jvm launching maven and
             setting the value to an interface where you know multicast works
          -->
        <jgroups.bind_addr>127.0.0.1</jgroups.bind_addr>

        <!-- The following properties configure the embedded MongoDB instance used for tests -->
        <mongodb.embedded.version>${version.org.mongodb}</mongodb.embedded.version>
        <mongodb.embedded.bind-ip>127.0.0.1</mongodb.embedded.bind-ip>
        <mongodb.embedded.temp-dir>${project.build.directory}${file.separator}embeddedMongoDb${file.separator}extracted</mongodb.embedded.temp-dir>
        <mongodb.embedded.log-dir>${project.build.directory}${file.separator}embeddedMongoDb${file.separator}logs</mongodb.embedded.log-dir>
        <!-- Not using default port to reduce chances of shutting down an external MongoDB instance -->
        <mongodb.embedded.port>27018</mongodb.embedded.port>

        <!-- Module slots -->

        <module-slot.org.hibernate.ogm.short-id>${parsed-version.majorVersion}.${parsed-version.minorVersion}</module-slot.org.hibernate.ogm.short-id>
        <module-slot.org.hibernate.ogm.jipijapa.full-id>${project.version}</module-slot.org.hibernate.ogm.jipijapa.full-id>

        <!-- using 'main' slot module, so that we're using the one provided by WF itself -->
        <module-slot.org.hibernate.search.short-id>main</module-slot.org.hibernate.search.short-id>
        <!-- to use instead the one provided by Hibernate Search feature pack please put back the usual slot: -->
        <!-- <module-slot.org.hibernate.search.short-id>${parsed-version.org.hibernate.search.majorVersion}.${parsed-version.org.hibernate.search.minorVersion}</module-slot.org.hibernate.search.short-id> -->

        <module-slot.org.hibernate.short-id>${parsed-version.org.hibernate.majorVersion}.${parsed-version.org.hibernate.minorVersion}</module-slot.org.hibernate.short-id>
        <module-slot.org.hibernate.hql.full-id>${version.org.hibernate.hql}</module-slot.org.hibernate.hql.full-id>
        <module-slot.org.infinispan.short-id>ispn-${parsed-version.org.infinispan.majorVersion}.${parsed-version.org.infinispan.minorVersion}</module-slot.org.infinispan.short-id>

        <!-- Maven plugins versions -->

        <version.animal-sniffer.plugin>1.16</version.animal-sniffer.plugin>
        <version.antrun.plugin>1.8</version.antrun.plugin>
        <version.assembly.plugin>3.1.0</version.assembly.plugin>
        <version.buildhelper.plugin>3.0.0</version.buildhelper.plugin>
        <version.buildnumber.plugin>1.4</version.buildnumber.plugin>
        <version.checkstyle.plugin>2.17</version.checkstyle.plugin>
        <version.clean.plugin>3.0.0</version.clean.plugin>
        <version.clirr.plugin>2.7</version.clirr.plugin>
        <version.compiler.plugin>3.7.0</version.compiler.plugin>
        <version.copy.plugin>0.0.5</version.copy.plugin>
        <version.dependency.plugin>3.0.2</version.dependency.plugin>
        <version.deploy.plugin>2.8.2</version.deploy.plugin>
        <version.embedmongo.plugin>0.4.0</version.embedmongo.plugin>
        <version.de.flapdoodle.embed.mongo>2.1.1</version.de.flapdoodle.embed.mongo>
        <version.enforcer.plugin>3.0.0-M1</version.enforcer.plugin>
        <version.groovy.plugin>2.0</version.groovy.plugin>
        <version.org.codehaus.groovy>2.4.12</version.org.codehaus.groovy>
        <version.help.plugin>2.2</version.help.plugin>
        <version.install.plugin>2.5.2</version.install.plugin>
        <version.jar.plugin>3.0.2</version.jar.plugin>
        <version.javadoc.plugin>3.0.0</version.javadoc.plugin>
        <version.processor.plugin>3.2.0</version.processor.plugin>
        <version.release.plugin>2.5.3</version.release.plugin>
        <version.resources.plugin>3.0.2</version.resources.plugin>
        <version.site.plugin>3.6</version.site.plugin>
        <version.source.plugin>3.0.0</version.source.plugin>
        <version.surefire.plugin>2.21.0</version.surefire.plugin>
        <version.failsafe.plugin>${version.surefire.plugin}</version.failsafe.plugin>
        <version.wildfly.plugin>1.2.1.Final</version.wildfly.plugin>
        <version.org.wildfly.build-tools>1.2.9.Final</version.org.wildfly.build-tools>

        <!-- Asciidoctor -->

        <version.asciidoctor.plugin>1.5.6</version.asciidoctor.plugin>
        <version.org.hibernate.infra.hibernate-asciidoctor-theme>1.0.2.Final</version.org.hibernate.infra.hibernate-asciidoctor-theme>
        <version.org.jruby>9.1.15.0</version.org.jruby>
        <version.org.asciidoctor.asciidoctorj>1.5.6</version.org.asciidoctor.asciidoctorj>
        <version.org.asciidoctor.asciidoctorj-pdf>1.5.0-alpha.16</version.org.asciidoctor.asciidoctorj-pdf>

        <!--
            Please don't change the name of this property, it may be used and
            overridden by a CI job of the Checkstyle project so that they can
            check for regressions. Which is obviously good for us, too.
         -->
        <puppycrawl.checkstyle.version>8.9</puppycrawl.checkstyle.version>

        <!-- Build settings -->

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Can be overridden by subprojects if dependency convergence cannot be achieved -->
        <enforcer.dependencyconvergence.skip>false</enforcer.dependencyconvergence.skip>

        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.testTarget>${maven.compiler.target}</maven.compiler.testTarget>
        <maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>
        <!--
                Options to override the compiler arguments directly on the compiler argument line to separate between what
                the IDE understands as the source level and what the Maven compiler actually use.
        -->
        <maven.compiler.argument.target>${maven.compiler.target}</maven.compiler.argument.target>
        <maven.compiler.argument.source>${maven.compiler.source}</maven.compiler.argument.source>
        <maven.compiler.argument.testTarget>${maven.compiler.testTarget}</maven.compiler.argument.testTarget>
        <maven.compiler.argument.testSource>${maven.compiler.testSource}</maven.compiler.argument.testSource>

        <jdk.min.version>${maven.compiler.argument.source}</jdk.min.version>
        <!-- The plugin org.wildfly.plugins:wildfly-maven-plugin requires Maven version 3.3.1 -->
        <maven.min.version>3.3.1</maven.min.version>
    </properties>

    <!-- Only for management of test-scoped dependencies; All other dependencies (which are exposed to users) are
         managed in the BOM -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${version.junit}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>io.takari.junit</groupId>
                <artifactId>takari-cpsuite</artifactId>
                <version>${version.io.takari.junit}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easytesting</groupId>
                <artifactId>fest-assert</artifactId>
                <version>${version.org.easytesting.fest-assert}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.experlog</groupId>
                <artifactId>xapool</artifactId>
                <scope>test</scope>
                <version>${version.com.experlog.xapool}</version>
            </dependency>
            <dependency>
                <groupId>org.skyscreamer</groupId>
                <artifactId>jsonassert</artifactId>
                <version>${version.org.skyscreamer.jsonassert}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.byteman</groupId>
                <artifactId>byteman</artifactId>
                <version>${version.org.jboss.byteman}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.byteman</groupId>
                <artifactId>byteman-bmunit</artifactId>
                <version>${version.org.jboss.byteman}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.byteman</groupId>
                <artifactId>byteman-install</artifactId>
                <version>${version.org.jboss.byteman}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
              <groupId>org.jboss.naming</groupId>
              <artifactId>jnp-client</artifactId>
              <scope>test</scope>
              <version>${version.org.jboss.naming}</version>
            </dependency>
            <dependency>
              <groupId>org.jboss.naming</groupId>
              <artifactId>jnpserver</artifactId>
              <scope>test</scope>
              <version>${version.org.jboss.naming}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.shrinkwrap</groupId>
                <artifactId>shrinkwrap-bom</artifactId>
                <version>${version.org.jboss.shrinkwrap}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${version.org.mockito}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>${version.org.hamcrest}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${version.com.google.guava}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-core</artifactId>
                <version>${version.org.openjdk.jmh}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-generator-annprocess</artifactId>
                <version>${version.org.openjdk.jmh}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.logging</groupId>
                <artifactId>jboss-logging-processor</artifactId>
                <version>${version.org.jboss.logging.jboss-logging-tools}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.logging</groupId>
                <artifactId>jboss-logging-annotations</artifactId>
                <version>${version.org.jboss.logging.jboss-logging-tools}</version>
            </dependency>
            <dependency>
                <groupId>org.jboss</groupId>
                <artifactId>jboss-transaction-spi</artifactId>
                <version>${version.org.jboss.jboss-transaction-spi}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.jboss.logging</groupId>
                        <artifactId>jboss-logging-spi</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.jboss.ironjacamar</groupId>
                        <artifactId>ironjacamar-spec-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.jboss.spec.javax.resource</groupId>
                        <artifactId>jboss-connector-api_1.5_spec</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.jboss.spec.javax.transaction</groupId>
                        <artifactId>jboss-transaction-api_1.2_spec</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <defaultGoal>install</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <showWarnings>true</showWarnings>
                    <source>${maven.compiler.argument.source}</source>
                    <target>${maven.compiler.argument.target}</target>
                    <testSource>${maven.compiler.argument.testSource}</testSource>
                    <testTarget>${maven.compiler.argument.testTarget}</testTarget>
                    <encoding>UTF-8</encoding>
                    <!-- Annotation processor is run as an independent step -->
                    <proc>none</proc>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor>hibernate.org</Implementation-Vendor>
                            <Implementation-Vendor-Id>hibernate.org</Implementation-Vendor-Id>
                            <Implementation-URL>http://hibernate.org</Implementation-URL>
                            <Git-Commit-Id>${buildNumber}</Git-Commit-Id>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-rules</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[${jdk.min.version},)</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>${maven.min.version}</version>
                                </requireMavenVersion>
                                <bannedDependencies>
                                    <searchTransitive>true</searchTransitive>
                                    <excludes>
                                        <exclude>org.apache.geronimo.specs:geronimo-jta_1.1_spec</exclude>
                                    </excludes>
                                </bannedDependencies>
                            </rules>
                        </configuration>
                    </execution>
                    <execution>
                        <id>enforce-dependency-convergence</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <skip>${enforcer.dependencyconvergence.skip}</skip>
                            <rules>
                                <DependencyConvergence />
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>check-java-api-signature</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.wildfly.plugins</groupId>
                    <artifactId>wildfly-maven-plugin</artifactId>
                    <version>${version.wildfly.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>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>${version.antrun.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${version.javadoc.plugin}</version>
                    <configuration>
                        <quiet>true</quiet>
                        <!--
                        For some reason the 'javadoc' goal (used in individual projects to generate the javadoc)
                        targets the report output directory, while the 'jar' goal (used in the javadoc module
                        to aggregate the javadoc) searches for pre-existing javadoc in the non-report output directory...
                        As a result, the jar goal displays some warnings about the javadoc not being found and
                        regenerates it. This sets the report output directory to the same path as the non-report one,
                        which solves the problem.
                         -->
                        <reportOutputDirectory>${project.build.directory}/apidocs</reportOutputDirectory>
                        <additionalDependencies>
                            <additionalDependency>
                                <groupId>org.jboss.logging</groupId>
                                <artifactId>jboss-logging-annotations</artifactId>
                                <version>${version.org.jboss.logging.jboss-logging-tools}</version>
                            </additionalDependency>
                            <dependency>
                                <groupId>org.jboss.spec.javax.transaction</groupId>
                                <artifactId>jboss-transaction-api_1.2_spec</artifactId>
                                <version>${version.org.jboss.spec.javax.transaction.jboss-transaction-api_1.2_spec}</version>
                            </dependency>
                        </additionalDependencies>
                        <!-- Exclude implementation classes from the javadoc -->
                        <excludePackageNames>*.impl,*.impl.*</excludePackageNames>
                        <tags>
                            <tag>
                                <name>experimental</name>
                                <placement>a</placement>
                                <head>Experimental</head>
                            </tag>
                        </tags>
                        <links>
                            <link>https://docs.oracle.com/javase/8/docs/api/</link>
                            <link>https://docs.jboss.org/hibernate/orm/5.3/javadocs/</link>
                            <link>https://docs.jboss.org/hibernate/search/5.10/api/</link>
                            <link>https://lucene.apache.org/core/5_5_5/core/</link>
                        </links>
                        <bottom>
                            <![CDATA[Copyright &copy; ${project.inceptionYear}-{currentYear} <a href="https://www.redhat.com/">Red Hat, Inc.</a> and others. Licensed under the GNU Lesser General Public License (LGPL), version 2.1 or later.]]>
                        </bottom>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${version.jar.plugin}</version>
                    <dependencies>
                        <dependency>
                            <!-- This override is needed to fix
                                https://issues.apache.org/jira/browse/MJAR-226
                              We don't update the maven-jar-plugin yet as it introduces an incompatibility with Eclipse m2e:
                                http://lists.jboss.org/pipermail/hibernate-dev/2016-August/015192.html
                              An m2e update is expected to make this redundant, we'll then upgrade to maven-jar-plugin 3.0.2+ -->
                            <artifactId>maven-archiver</artifactId>
                            <groupId>org.apache.maven</groupId>
                            <version>3.1.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>${version.clean.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>${version.install.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${version.site.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${version.resources.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${version.compiler.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${version.enforcer.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${version.checkstyle.plugin}</version>
                    <dependencies>
                        <!-- force SLF4J dependency to align
                             Maven internals and CheckStyle's
                             see https://github.com/jcgay/maven-color/wiki/Problems
                             If that causes problem, that can be removed
                             but maven-color won't work -->
                        <dependency>
                            <groupId>org.slf4j</groupId>
                            <artifactId>jcl-over-slf4j</artifactId>
                            <version>${version.org.slf4j}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.slf4j</groupId>
                            <artifactId>slf4j-jdk14</artifactId>
                            <version>${version.org.slf4j}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${puppycrawl.checkstyle.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <configLocation>src/main/build-config/checkstyle.xml</configLocation>
                        <consoleOutput>true</consoleOutput>
                        <failsOnError>true</failsOnError>
                        <violationSeverity>error</violationSeverity>
                        <includeResources>true</includeResources>
                        <includeTestSourceDirectory>true</includeTestSourceDirectory>
                        <includeTestResources>false</includeTestResources>
                        <!-- generated code -->
                        <excludes>
                            **/Log_$logger.java
                        </excludes>
                    </configuration>
                    <executions>
                        <execution>
                            <id>check-style</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>checkstyle</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.bsc.maven</groupId>
                    <artifactId>maven-processor-plugin</artifactId>
                    <version>${version.processor.plugin}</version>
                    <executions>
                        <!-- Run annotation processors on src/main/java sources -->
                        <execution>
                            <id>process</id>
                            <goals>
                                <goal>process</goal>
                            </goals>
                            <phase>generate-sources</phase>
                            <configuration>
                                <processors>
                                    <processor>org.jboss.logging.processor.apt.LoggingToolsProcessor</processor>
                                </processors>
                                <compilerArguments>-AtranslationFilesPath=${project.basedir}/src/main/resources/ -source ${maven.compiler.argument.source} -target ${maven.compiler.argument.target} -Aorg.jboss.logging.tools.addGeneratedAnnotation=false</compilerArguments>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.jboss.logging</groupId>
                            <artifactId>jboss-logging-processor</artifactId>
                            <version>${version.org.jboss.logging.jboss-logging-tools}</version>
                            <scope>compile</scope>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>animal-sniffer-maven-plugin</artifactId>
                    <version>${version.animal-sniffer.plugin}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.ow2.asm</groupId>
                            <artifactId>asm-all</artifactId>
                            <version>5.0.3</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <signature>
                            <groupId>org.codehaus.mojo.signature</groupId>
                            <artifactId>java18</artifactId>
                            <version>1.0</version>
                        </signature>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${version.surefire.plugin}</version>
                    <configuration>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <argLine>${additionalRuntimeArgLine}</argLine>
                        <runOrder>alphabetical</runOrder>
                        <systemPropertyVariables>
                            <!-- See test org.hibernate.ogm.test.utils.EnvironmentTest -->
                            <hibernate.service.allow_crawling>false</hibernate.service.allow_crawling>
                            <project.build.directory>${project.build.directory}</project.build.directory>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>
                <!-- Asciidoctor -->
                <plugin>
                    <groupId>org.asciidoctor</groupId>
                    <artifactId>asciidoctor-maven-plugin</artifactId>
                    <version>${version.asciidoctor.plugin}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.jruby</groupId>
                            <artifactId>jruby-complete</artifactId>
                            <version>${version.org.jruby}</version>
                        </dependency>
                         <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj</artifactId>
                            <version>${version.org.asciidoctor.asciidoctorj}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.asciidoctor</groupId>
                            <artifactId>asciidoctorj-pdf</artifactId>
                            <version>${version.org.asciidoctor.asciidoctorj-pdf}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>ch.mfrey.maven.plugin</groupId>
                    <artifactId>copy-maven-plugin</artifactId>
                    <version>${version.copy.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${version.assembly.plugin}</version>
                    <configuration>
                        <tarLongFileMode>posix</tarLongFileMode>
                        <descriptors>
                            <descriptor>${basedir}/src/main/assembly/dist.xml</descriptor>
                        </descriptors>
                        <finalName>${assembly.name}</finalName>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${version.release.plugin}</version>
                    <configuration>
                        <goals>deploy</goals>
                        <preparationGoals>clean install</preparationGoals>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <allowTimestampedSnapshots>true</allowTimestampedSnapshots>
                        <releaseProfiles>distro</releaseProfiles>
                        <arguments>-DskipTests</arguments>
                        <pushChanges>false</pushChanges>
                        <localCheckout>true</localCheckout>
                        <tagNameFormat>@{project.version}</tagNameFormat>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${version.source.plugin}</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${version.deploy.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-help-plugin</artifactId>
                    <version>${version.help.plugin}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${version.failsafe.plugin}</version>
                </plugin>
                <!-- Unpack test from hibernate-ogm-core to re-run them on each other module database integration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${version.dependency.plugin}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${version.buildhelper.plugin}</version>
                </plugin>
                <plugin>
                    <!-- This plugin's configuration is used in m2e only. -->
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.jboss.maven.plugins</groupId>
                                        <artifactId>maven-injection-plugin</artifactId>
                                        <versionRange>[1.0.2,)</versionRange>
                                        <goals>
                                            <goal>bytecode</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-dependency-plugin</artifactId>
                                        <versionRange>[2.1,)</versionRange>
                                        <goals>
                                            <goal>unpack</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>com.github.joelittlejohn.embedmongo</groupId>
                                        <artifactId>embedmongo-maven-plugin</artifactId>
                                        <versionRange>[0.1.9,)</versionRange>
                                        <goals>
                                            <goal>start</goal>
                                            <goal>stop</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>build-helper-maven-plugin</artifactId>
                                        <versionRange>[1.9.1,)</versionRange>
                                        <goals>
                                            <goal>parse-version</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.asciidoctor</groupId>
                                        <artifactId>asciidoctor-maven-plugin</artifactId>
                                        <versionRange>[1.5.3,)</versionRange>
                                        <goals>
                                            <goal>process-asciidoc</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${version.buildnumber.plugin}</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <doCheck>false</doCheck>
                        <doUpdate>false</doUpdate>
                        <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.joelittlejohn.embedmongo</groupId>
                    <artifactId>embedmongo-maven-plugin</artifactId>
                    <version>${version.embedmongo.plugin}</version>
                    <configuration>
                        <port>${mongodb.embedded.port}</port>
                        <logging>file</logging>
                        <logFile>${project.build.directory}/mongodb.embedded.log</logFile>
                        <bindIp>${mongodb.embedded.bind-ip}</bindIp>
                        <version>${mongodb.embedded.version}</version>
                        <!--
                            Using the default configuration - by not setting a database path -
                            the database will be created in a directory with a random name such as:
                            /tmp/embedmongo-db-91e2f3b2-5e79-49ee-a345-44ffd9c2257d
                            and will be automatically deleted on stop.
                        -->
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>de.flapdoodle.embed</groupId>
                            <artifactId>de.flapdoodle.embed.mongo</artifactId>
                            <version>${version.de.flapdoodle.embed.mongo}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <!-- Creates a report by running "mvn clirr:clirr" -->
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>clirr-maven-plugin</artifactId>
                    <version>${version.clirr.plugin}</version>
                    <configuration>
                        <comparisonVersion>5.3.0.Final</comparisonVersion>
                        <excludes>
                            <exclude>org/hibernate/ogm/**/impl/**</exclude>
                        </excludes>
                        <logResults>true</logResults>
                        <minSeverity>info</minSeverity>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <repositories>
        <!--
        To build Hibernate OGM you have to add the JBoss Maven repository to your settings.xml
        See also http://community.jboss.org/wiki/OverviewofHibernateOGM
        -->
    </repositories>

    <profiles>
        <profile>
            <id>non-jigsaw</id>
            <activation>
                <!-- The versions we're using of Ehcache, Infinispan and Neo4J won't work on JDK9. Needs upgrading.  -->
                <jdk>1.8</jdk>
            </activation>
            <modules>
                <module>infinispan</module>
                <module>infinispan-embedded</module>
                <module>infinispan-remote</module>
                <!-- The WildFly modules require the other modules to be enabled too -->
                <module>featurepack</module>
            </modules>
        </profile>
        <profile>
            <id>jigsaw</id>
            <activation>
                <!-- Java 9 doesn't identify itself as "1.9" but "9" -->
                <jdk>9</jdk>
            </activation>
            <properties>
                <additionalRuntimeArgLine>-Djdk.attach.allowAttachSelf=true --add-modules java.xml.bind</additionalRuntimeArgLine>
            </properties>
        </profile>
        <profile>
            <id>java10</id>
            <activation>
                <jdk>10</jdk>
            </activation>
            <properties>
                <additionalRuntimeArgLine>-Djdk.attach.allowAttachSelf=true --add-modules java.xml.bind</additionalRuntimeArgLine>
            </properties>
        </profile>
        <profile>
            <id>integrationtest</id>
            <activation>
                <property>
                    <name>skipITs</name>
                    <value>!true</value>
                </property>
                <!-- Skip on Java 9, both because of some NoSQL stores aren't ready and because of WildFly -->
                <jdk>1.8</jdk>
            </activation>
            <modules>
                <module>integrationtest</module>
            </modules>
        </profile>
        <profile>
            <id>doc</id>
            <activation>
                <property>
                    <name>skipDocs</name>
                    <value>!true</value>
                </property>
                <!-- And skip on Java 9 -->
                <jdk>1.8</jdk>
            </activation>
            <modules>
                <module>documentation</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>generate-javadoc</id>
                                <goals>
                                    <goal>javadoc-no-fork</goal>
                                </goals>
                                <phase>prepare-package</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>distro</id>
            <activation>
                <property>
                    <name>skipDistro</name>
                    <value>!true</value>
                </property>
                <!-- And skip on Java 9 -->
                <jdk>1.8</jdk>
            </activation>
            <modules>
                <module>distribution</module>
            </modules>
        </profile>
    </profiles>
</project>

