<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>
    <groupId>org.janusgraph</groupId>
    <artifactId>janusgraph</artifactId>
    <version>0.5.3</version>
    <packaging>pom</packaging>
    <prerequisites>
        <maven>2.2.1</maven>
    </prerequisites>
    <name>JanusGraph: Distributed Graph Database</name>
    <url>https://janusgraph.org</url>

    <description>
        JanusGraph is a distributed graph database optimized for processing massive-scale graphs represented over a machine
        cluster.
        JanusGraph separates the concerns of graph processing and manipulation from storing the graph on disk,
        delegating that concern to an extensible set of persistence solutions.
    </description>
    <developers>
        <developer>
            <name>Matthias Broecheler</name>
            <email>me@matthiasb.com</email>
            <url>http://matthiasb.com</url>
        </developer>
        <developer>
            <name>Daniel LaRocque</name>
            <email>dalaro@hopcount.org</email>
        </developer>
        <developer>
            <name>Pavel Yaskevich</name>
            <email>povel.y@gmail.com</email>
            <url>https://github.com/xedin</url>
        </developer>
    </developers>
    <contributors>
        <contributor>
            <name>Marko A. Rodriguez</name>
            <email>marko@markorodriguez.com</email>
            <url>https://markorodriguez.com</url>
        </contributor>
        <contributor>
            <name>Stephen Mallette</name>
            <email>spmva@genoprime.com</email>
            <url>https://stephen.genoprime.com</url>
        </contributor>
    </contributors>
    <inceptionYear>2012</inceptionYear>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
    <scm>
        <connection>scm:git:git@github.com:JanusGraph/janusgraph.git</connection>
        <developerConnection>scm:git:git@github.com:JanusGraph/janusgraph.git</developerConnection>
        <url>git@github.com:JanusGraph/janusgraph.git</url>
        <tag>v0.5.3</tag>
    </scm>
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
    <properties>
        <titan.compatible-versions>1.0.0,1.1.0-SNAPSHOT</titan.compatible-versions>
        <tinkerpop.version>3.4.6</tinkerpop.version>
        <junit-platform.version>1.5.2</junit-platform.version>
        <junit.version>5.5.2</junit.version>
        <mrunit.version>1.1.0</mrunit.version>
        <mockito.version>2.23.0</mockito.version>
        <cassandra.version>2.2.13</cassandra.version>
        <jamm.version>0.3.0</jamm.version>
        <metrics.version>3.2.2</metrics.version>
        <slf4j.version>1.7.12</slf4j.version>
        <httpcomponents.httpclient.version>4.5.10</httpcomponents.httpclient.version>
        <httpcomponents.httpcore.version>4.4.12</httpcomponents.httpcore.version>
        <hadoop2.version>2.7.7</hadoop2.version>
        <hbase1.version>1.4.10</hbase1.version>
        <hbase2.version>2.1.5</hbase2.version>
        <hbase.server.version>1.4.10</hbase.server.version>
        <bigtable.version>1.14.0</bigtable.version>
        <scylladb.version>1.7.1</scylladb.version>
        <!-- align with org.apache.hbase:hbase -->
        <jackson1.version>1.9.13</jackson1.version>
        <jackson2.version>2.10.3</jackson2.version>
        <lucene-solr.version>7.7.2</lucene-solr.version>
        <elasticsearch.version>7.6.2</elasticsearch.version>
        <commons.beanutils.version>1.7.0</commons.beanutils.version>
        <commons.collections.version>3.2.2</commons.collections.version>
        <joda.version>2.8.2</joda.version>
        <concurrentlinkedhashmap.version>1.3</concurrentlinkedhashmap.version>
        <antlr2.version>2.7.7</antlr2.version>
        <antlr.version>3.2</antlr.version>
        <asm3.version>3.1</asm3.version>
        <asm4.version>4.0</asm4.version>
        <zookeeper.version>3.4.6</zookeeper.version>
        <!-- align with org.apache.tinkerpop:tinkerpop -->
        <netty4.version>4.1.45.Final</netty4.version>
        <jna.version>4.0.0</jna.version>
        <kuali.s3.wagon.version>1.1.20</kuali.s3.wagon.version>
        <jasper.version>5.5.23</jasper.version>
        <gmavenplus.version>1.5</gmavenplus.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <janusgraph.testdir>${project.build.directory}/janusgraph-test</janusgraph.testdir>
        <gpg.skip>false</gpg.skip>
        <maven.gpg.version>1.6</maven.gpg.version>
        <perf.jvm.opts />
        <default.test.jvm.opts>-Xms256m -Xmx768m -XX:+HeapDumpOnOutOfMemoryError -ea ${test.extra.jvm.opts}</default.test.jvm.opts>
        <mem.jvm.opts>-Xms256m -Xmx256m -ea -XX:+HeapDumpOnOutOfMemoryError ${test.extra.jvm.opts}</mem.jvm.opts>
        <test.extra.jvm.opts />
        <test.skip.default>false</test.skip.default>
        <test.skip.tp>true</test.skip.tp>
        <top.level.basedir>${basedir}</top.level.basedir>
        <maven.javadoc.version>2.10.4</maven.javadoc.version>
        <compiler.source>1.8</compiler.source>
        <compiler.target>1.8</compiler.target>
        <test.excluded.groups>MEMORY_TESTS,PERFORMANCE_TESTS,BRITTLE_TESTS</test.excluded.groups>
        <dependency.locations.enabled>false</dependency.locations.enabled>
        <cassandra-driver.version>3.9.0</cassandra-driver.version>
        <testcontainers.version>1.12.4</testcontainers.version>
        <easymock.version>3.4</easymock.version>
    </properties>
    <modules>
        <module>janusgraph-codepipelines-ci</module>
        <module>janusgraph-driver</module>
        <module>janusgraph-core</module>
        <module>janusgraph-server</module>
        <module>janusgraph-backend-testutils</module>
        <module>janusgraph-test</module>
        <module>janusgraph-inmemory</module>
        <module>janusgraph-berkeleyje</module>
        <module>janusgraph-cql</module>
        <module>janusgraph-cassandra</module>
        <module>janusgraph-hadoop</module>
        <module>janusgraph-hbase-parent</module>
        <module>janusgraph-bigtable</module>
        <module>janusgraph-es</module>
        <module>janusgraph-lucene</module>
        <module>janusgraph-all</module>
        <module>janusgraph-dist</module>
        <module>janusgraph-doc</module>
        <module>janusgraph-solr</module>
        <module>janusgraph-examples</module>
    </modules>
    <repositories>
        <repository>
            <id>apache-snapshots</id>
            <name>repository.apache.org snapshots</name>
            <url>https://repository.apache.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <!-- the repositories below are included here for `mvn project-info-reports:dependencies` -->
        <repository>
            <!-- for com.sleepycat:je:jar -->
            <id>oracleReleases</id>
            <name>Oracle Released Java Packages</name>
            <url>https://download.oracle.com/maven</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <!-- for org.restlet.jee:org.restlet:jar -->
            <id>spring-releases</id>
            <name>Spring Release Repository</name>
            <url>https://repo.spring.io/libs-release-remote/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <build>
        <directory>${basedir}/target</directory>
        <plugins>
            <plugin>        
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <executions>
                    <execution>
                        <id>enforce-dependency-convergence</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <DependencyConvergence />
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <!--
                      Only release:perform uses this configuration
                      setting; release:prepare doesn't care and always
                      runs "clean verify"
                    -->
                    <goals>javadoc:aggregate deploy</goals>

                    <!--
                      Tell the release plugin to never "git push".
                      When releasing, you have to manually issue "git
                      push" between release:prepare and
                      release:perform.  You'll have to push both the
                      branch you're releasing and the tag
                      release:prepare locally created.
                    -->
                    <pushChanges>false</pushChanges>

                    <!--
                      @{...} is a special variable interpolation
                      syntax that uses the target release version
                      instead of the pom's actual version, which is
                      usually a -SNAPSHOT version when this setting
                      gets evaluated.
                    -->
                    <tagNameFormat>@{project.version}</tagNameFormat>

                    <!--
                      The release:perform goal activates these
                      profiles when it invokes maven with the <goals>
                      listed above.  Release engineering specific to
                      release:perform and disabled during non-release
                      operation should be encapsulated with the
                      profile id listed below.
                    -->
                    <releaseProfiles>janusgraph-release</releaseProfiles>
                    <useReleaseProfile>false</useReleaseProfile>

                    <!-- Keep all submodules at same version as parent -->
                    <autoVersionSubmodules>true</autoVersionSubmodules>

                    <!-- applies to both release:prepare and :perform -->
                    <arguments>-DskipTests=true</arguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>0.13</version>
                <executions>
                    <execution>
                        <id>rat-checks</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludeSubProjects>false</excludeSubProjects>
                    <excludes>
                        <exclude>**/target/**</exclude>
                        <exclude>**/.classpath</exclude>
                        <exclude>**/.project</exclude>
                        <exclude>**/.settings/**</exclude>
                        <exclude>**/src/main/resources/META-INF/services/**</exclude>
                        <exclude>**/src/test/resources/META-INF/services/**</exclude>
                        <exclude>**/*.iml</exclude>
                        <exclude>**/*.json</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.xml.releaseBackup</exclude>
                        <exclude>docs/**</exclude>
                        <exclude>**/*.md</exclude>
                        <exclude>**/*.txt</exclude>
                        <exclude>**/*.log</exclude>
                        <exclude>**/*.patch</exclude>
                        <exclude>**/*.crt</exclude>
                        <exclude>**/*.sysconfig</exclude>
                        <exclude>**/*.csv</exclude>
                        <exclude>**/*.id</exclude>
                        <exclude>**/*.gz</exclude>
                        <exclude>.editorconfig</exclude>
                        <exclude>CC-BY-4.0.txt</exclude>
                        <exclude>**/cqlshrc</exclude>
                        <exclude>**/regionservers</exclude>
                        <exclude>**/jaas_keytab.conf</exclude>
                        <exclude>**/src/test/resources/excludes</exclude>
                        <exclude>**/src/test/resources/longTests1</exclude>
                        <exclude>**/src/test/resources/longTests2</exclude>
                        <exclude>**/src/pkg/static/debian/**</exclude>
                        <exclude>**/src/test/resources/mockito-extensions/**</exclude>
                        <exclude>**/src/test/resources/org/janusgraph/hadoop/formats/edgelist/rdf/**</exclude>
                    </excludes>
                </configuration>
            </plugin>        

        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>${compiler.source}</source>
                        <target>${compiler.target}</target>
                        <compilerArguments>
                            <Xmaxerrs>500</Xmaxerrs>
                        </compilerArguments>
                        <compilerArgs>
                          <arg>-Xlint:unchecked</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                    <configuration>
                        <argLine>${default.test.jvm.opts}</argLine>
                        <runOrder>alphabetical</runOrder>
                        <failIfNoTests>false</failIfNoTests>
                        <!-- six hours -->
                        <forkedProcessTimeoutInSeconds>21600</forkedProcessTimeoutInSeconds>
                        <reuseForks>false</reuseForks>
                        <excludes>
                            <exclude>**/*PerformanceTest.java</exclude>
                            <exclude>**/*ConcurrentTest.java</exclude>
                            <exclude>**/*Groovy*Test.java</exclude>
                            <exclude>**/*ComputerTest.java</exclude>
                            <exclude>**/*ProcessTest.java</exclude>
                            <exclude>**/*ProcessPerformanceTest.java</exclude>
                            <exclude>**/*StructureTest.java</exclude>
                        </excludes>
                        <excludedGroups>${test.excluded.groups}</excludedGroups>
                        <skip>${test.skip.default}</skip>
                        <!-- Use log4j.properties from module test resources -->
                        <systemProperties>
                            <property>
                                <name>log4j.configuration</name>
                                <value>file:${project.build.directory}/test-classes/log4j.properties</value>
                            </property>
                        </systemProperties>
                    </configuration>
                    <executions>
                        <execution>
                            <id>tinkerpop-test</id>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <phase>test</phase>
                            <configuration combine.self="override">
                                <reuseForks>false</reuseForks>
                                <forkCount>1</forkCount>
                                <parallel>none</parallel>
                                <threadCount>1</threadCount>
                                <perCoreThreadCount>false</perCoreThreadCount>
                                <includes>
                                    <include>**/*Groovy*Test.java</include>
                                    <include>**/*ComputerTest.java</include>
                                    <include>**/*ProcessTest.java</include>
                                    <include>**/*ProcessPerformanceTest.java</include>
                                    <include>**/*StructureTest.java</include>
                                </includes>
                                <runOrder>alphabetical</runOrder>
                                <skipTests>${test.skip.tp}</skipTests>
                                <systemPropertyVariables>
                                  <build.dir>${project.build.directory}</build.dir>
                                  <log4j.configuration>file:${project.build.directory}/test-classes/log4j.properties</log4j.configuration>
                                  <is.testing>true</is.testing>
                                </systemPropertyVariables>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <!-- Use log4j.properties from module test resources -->
                        <systemProperties>
                            <property>
                                <name>log4j.configuration</name>
                                <value>file:${project.build.directory}/test-classes/log4j.properties</value>
                            </property>
                        </systemProperties>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                    <executions>
                        <execution>
                            <id>default-site</id>
                            <phase>none</phase>
                        </execution>
                        <execution>
                            <id>default-deploy</id>
                            <phase>none</phase>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-scm-plugin</artifactId>
                    <version>1.9</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.7</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                </plugin>
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${maven.javadoc.version}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.2.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                </plugin>
                <plugin>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${maven.gpg.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.0-alpha-2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>wagon-maven-plugin</artifactId>
                    <version>1.0-beta-4</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.8</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>xml-maven-plugin</artifactId>
                    <version>1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>2.5.2</version>
                    <configuration>
                        <aggregate>true</aggregate>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.github</groupId>
                    <artifactId>site-maven-plugin</artifactId>
                    <version>0.8</version>
                    <configuration>
                        <!--
                          To push changes to gh-pages during
                          release:perform using this plugin, your
                          ~/.m2/settings.xml file must contain a
                          <server> stanza that matches the
                          <server>github</server> tag below.  Here's
                          an example settings.xml:
                        -->
                        <server>github</server>
                        <repositoryName>janusgraph</repositoryName>
                        <repositoryOwner>JanusGraph</repositoryOwner>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.5</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <dependencyManagement>
        <dependencies>
            <!-- Tinkerpop 3.x -->
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-core</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-server</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-console</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-groovy</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-driver</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>gremlin-test</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>tinkergraph-gremlin</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>hadoop-gremlin</artifactId>
                <version>${tinkerpop.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tinkerpop</groupId>
                <artifactId>spark-gremlin</artifactId>
                <version>${tinkerpop.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.eclipse.jetty.orbit</groupId>
                        <artifactId>javax.servlet</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.thoughtworks.paranamer</groupId>
                        <artifactId>paranamer</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Jackson 2.x -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-json-org</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-scala_2.11</artifactId>
                <version>${jackson2.version}</version>
            </dependency>
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda.version}</version>
            </dependency>
            <dependency>
                <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
                <artifactId>concurrentlinkedhashmap-lru</artifactId>
                <version>${concurrentlinkedhashmap.version}</version>
            </dependency>
            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr-runtime</artifactId>
                <version>${antlr.version}</version>
            </dependency>
            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr</artifactId>
                <version>${antlr.version}</version>
            </dependency>
            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr-master</artifactId>
                <version>${antlr.version}</version>
            </dependency>
            <dependency>
                <groupId>antlr</groupId>
                <artifactId>antlr</artifactId>
                <version>${antlr2.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>3.0.2</version>
            </dependency>
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>1.1.0.Final</version>
            </dependency>

            <!-- Jackson 1.x -->
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>${jackson1.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>${jackson1.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-xc</artifactId>
                <version>${jackson1.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-jaxrs</artifactId>
                <version>${jackson1.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-configuration</groupId>
                <artifactId>commons-configuration</artifactId>
                <version>1.10</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>${commons.collections.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>1.4.1</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>${commons.beanutils.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils-core</artifactId>
                <version>${commons.beanutils.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-math3</artifactId>
                <version>3.2</version>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>1.11</version>
            </dependency>
            <dependency>
                <groupId>net.oneandone.reflections8</groupId>
                <artifactId>reflections8</artifactId>
                <version>0.11.7</version>
            </dependency>
            <dependency>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
                <version>1.3.04</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>1.7.4</version>
            </dependency>
            <dependency>
                <artifactId>jboss-logging</artifactId>
                <groupId>org.jboss.logging</groupId>
                <version>3.1.2.GA</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.1.3</version>
            </dependency>
            <dependency>
                <!-- align with org.apache.hbase:hbase -->
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty</artifactId>
                <version>6.1.26</version>
            </dependency>

            <dependency>
                <groupId>net.jpountz.lz4</groupId>
                <artifactId>lz4</artifactId>
                <version>1.3.0</version>
            </dependency>

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>${netty4.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-handler</artifactId>
                <version>${netty4.version}</version>
            </dependency>

            <!-- The Objenesis version is closely coupled to Kryo and to TP3 versions -->
            <dependency>
                <groupId>org.objenesis</groupId>
                <artifactId>objenesis</artifactId>
                <version>2.1</version>
            </dependency>

            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
                <version>${junit-platform.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-runner</artifactId>
                <version>${junit-platform.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-inline</artifactId>
                <version>${mockito.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-junit-jupiter</artifactId>
                <version>${mockito.version}</version>
            </dependency>
            <!-- Force newer Snappy-java because 1.4.0.1 is broken on Mac OS X with JDK 7 -->
            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>1.0.5-M3</version>
            </dependency>
            <dependency>
                <!-- Run the full test suite when changing the Guava version.
                     The Guava team is deadly serious about their 18 month period from deprecation
                     to feature deletion, and as a result, at least one of JanusGraph's dependencies is
                     likely to break whenever the Guava version changes.

                     Example where blithely upgrading Guava introduced a linkage error in the past:
                     https://issues.apache.org/jira/browse/HBASE-10174
                -->
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>18.0</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.14</version>
            </dependency>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.jboss.netty</groupId>
                <artifactId>netty</artifactId>
                <version>3.2.7.Final</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty</artifactId>
                <version>3.10.5.Final</version>
            </dependency>

            <!-- Spatial4j -->
            <dependency>
                <groupId>org.locationtech.spatial4j</groupId>
                <artifactId>spatial4j</artifactId>
                <version>0.7</version>
            </dependency>

            <!-- Java Topology Suite (JTS) -->
            <dependency>
                <groupId>org.locationtech.jts</groupId>
                <artifactId>jts-core</artifactId>
                <version>1.16.1</version>
            </dependency>

            <!-- Package prefix is org.apache.commons.httpclient -->
            <dependency>
                <groupId>commons-httpclient</groupId>
                <artifactId>commons-httpclient</artifactId>
                <version>3.1</version>
            </dependency>

            <!-- Package prefix is org.apache.http -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpcomponents.httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>${httpcomponents.httpcore.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore-nio</artifactId>
                <version>${httpcomponents.httpcore.version}</version>
            </dependency>

            <dependency>
                <groupId>com.googlecode.json-simple</groupId>
                <artifactId>json-simple</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.3</version>
            </dependency>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>org.jacoco.ant</artifactId>
                <version>0.8.5</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-core</artifactId>
                <version>${metrics.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-jvm</artifactId>
                <version>${metrics.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-ganglia</artifactId>
                <version>${metrics.version}</version>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-graphite</artifactId>
                <version>${metrics.version}</version>
            </dependency>
            <dependency>
                <groupId>com.boundary</groupId>
                <artifactId>high-scale-lib</artifactId>
                <version>1.0.6</version>
            </dependency>
            <dependency>
                <groupId>com.clearspring.analytics</groupId>
                <artifactId>stream</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>it.unimi.dsi</groupId>
                <artifactId>fastutil</artifactId>
                <version>6.5.7</version>
            </dependency>
            <dependency>
                <!-- align with org.apache.cassandra:cassandra-all -->
                <groupId>org.apache.thrift</groupId>
                <artifactId>libthrift</artifactId>
                <version>0.9.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cassandra</groupId>
                <artifactId>cassandra-all</artifactId>
                <version>${cassandra.version}</version>
                <!-- Using avro-ipc 1.5.3 caused the following when opening the graphdb:
                     java.lang.NoSuchMethodError: org.apache.avro.io.DecoderFactory.configureDirectDecoder(Z)Lorg/apache/avro/io/DecoderFactory

                     Stock avro 1.4.0 or 1.4.1 might work, but I'd like to see
                     what customizations were made in the cassandra copy of avro
                     before trying to drop it for the stock artifact...
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.cassandra.deps</groupId>
                        <artifactId>avro</artifactId>
                    </exclusion>
                </exclusions>
                -->
            </dependency>
            <dependency>
                <groupId>org.apache.cassandra</groupId>
                <artifactId>cassandra-thrift</artifactId>
                <version>${cassandra.version}</version>
            </dependency>
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.18.0-GA</version>
            </dependency>
            <dependency>
                <groupId>com.carrotsearch</groupId>
                <artifactId>junit-benchmarks</artifactId>
                <version>0.7.0</version>
            </dependency>
            <dependency>
                <groupId>com.carrotsearch</groupId>
                <artifactId>hppc</artifactId>
                <version>0.7.1</version>
            </dependency>
            <dependency>
                <groupId>com.carrotsearch.randomizedtesting</groupId>
                <artifactId>randomizedtesting-runner</artifactId>
                <version>2.7.2</version>
            </dependency>
            <dependency>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity</artifactId>
                <version>1.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.8.3</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>

            <dependency>
                <groupId>jdk.tools</groupId>
                <artifactId>jdk.tools</artifactId>
                <version>1.8</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-client</artifactId>
                <version>${elasticsearch.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>${testcontainers.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>net.java.dev.jna</groupId>
                        <artifactId>jna</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>cassandra</artifactId>
                <version>${testcontainers.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.datastax.cassandra</groupId>
                        <artifactId>cassandra-driver-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>${easymock.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <profiles>

        <profile>
            <id>janusgraph-release</id>
            <!--
              Sign artifacts artifacts only during release:perform
              when this profile is automatically activated or whenever
              else it is manually activated.
    
              Stolen from: https://blog.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/
            -->
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <!-- Quiet mode still shows warnings and errors -->
                                    <quiet>true</quiet>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <useAgent>true</useAgent>
                                    <skip>${gpg.skip}</skip>
                                    <excludes>
                                        <exclude>*.asc</exclude>
                                    </excludes>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>sonar-upload</id>
            <properties>
                <sonar.jacoco.reportPath>${top.level.basedir}/target/jacoco-combined.exec</sonar.jacoco.reportPath>
                <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
            </properties>
        </profile>

        <profile>
            <id>hadoop2</id>

            <activation>
                <property>
                    <name>!hadoop.profile</name>
                </property>
            </activation>

            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-annotations</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-auth</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-client</artifactId>
                        <version>${hadoop2.version}</version>
                        <exclusions>
                            <exclusion>
                                <groupId>javax.servlet</groupId>
                                <artifactId>servlet-api</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-common</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-hdfs</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-hdfs</artifactId>
                        <version>${hadoop2.version}</version>
                        <classifier>tests</classifier>
                        <type>test-jar</type>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-mapreduce-client-common</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-mapreduce-client-core</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
                        <version>${hadoop2.version}</version>
                        <classifier>tests</classifier>
                        <type>test-jar</type>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-mapreduce-client-shuffle</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-yarn-api</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-yarn-common</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.hadoop</groupId>
                        <artifactId>hadoop-yarn-server-common</artifactId>
                        <version>${hadoop2.version}</version>
                    </dependency>
                </dependencies>
            </dependencyManagement>
        </profile>

        <profile>
            <id>coverage</id>
            <properties>
                <test.extra.jvm.opts>${jacoco.opts}</test.extra.jvm.opts>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-sources-for-jacoco</id>
                                <phase>process-resources</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/jacoco-sources</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/src/main/java/</directory>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-classes-for-jacoco</id>
                                <phase>process-classes</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/jacoco-classes</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.build.directory}/classes/</directory>
                                            <filtering>false</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <!-- Unpack all dependency class and source files for use by JaCoCo -->
                            <execution>
                                <id>unpack-dependency-sources</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>unpack-dependencies</goal>
                                </goals>
                                <configuration>
                                    <classifier>sources</classifier>
                                    <outputDirectory>${project.build.directory}/jacoco-sources</outputDirectory>
                                    <includeGroupIds>${project.groupId}</includeGroupIds>
                                    <excludeArtifactIds>janusgraph-test</excludeArtifactIds>
                                </configuration>
                            </execution>
                            <execution>
                                <id>unpack-dependency-classes</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>unpack-dependencies</goal>
                                </goals>
                                <configuration>
                                    <classifier />
                                    <!-- empty classifier requests the artifact containing classes -->
                                    <outputDirectory>${project.build.directory}/jacoco-classes</outputDirectory>
                                    <includeGroupIds>${project.groupId}</includeGroupIds>
                                    <excludeArtifactIds>janusgraph-test</excludeArtifactIds>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-jacoco-agent</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${top.level.basedir}/target/jacoco-combined.exec</destFile>
                                    <append>true</append>
                                    <propertyName>jacoco.opts</propertyName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <!-- The Maven JaCoCo plugin doesn't allow
                             configuration of sourcefiles and destfiles
                             directories.  The Ant JaCoCo task does.  That's
                             why we use antrun here for JaCoCo instead of
                             JaCoCo's Maven plugin. -->
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-cli</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <target>
                                        <taskdef name="report" classname="org.jacoco.ant.ReportTask" classpathref="maven.plugin.classpath" />
                                        <report>
                                            <executiondata>
                                                <file file="${top.level.basedir}/target/jacoco-combined.exec" />
                                            </executiondata>
                                            <structure name="Integration test coverage">
                                                <classfiles>
                                                    <fileset dir="${project.build.directory}/jacoco-classes" />
                                                </classfiles>
                                                <sourcefiles encoding="UTF-8">
                                                    <fileset dir="${project.build.directory}/jacoco-sources" />
                                                </sourcefiles>
                                            </structure>
                                            <html destdir="${project.build.directory}/jacoco-report" />
                                            <xml destfile="${project.build.directory}/jacoco-report/report.xml" />
                                        </report>
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.jacoco</groupId>
                                <artifactId>org.jacoco.ant</artifactId>
                                <version>0.8.5</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>memory-test</id>
            <activation>
                <property>
                    <name>test.skip.mem</name>
                    <value>false</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>memory-test</id>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <phase>test</phase>
                                <configuration combine.self="override">
                                    <argLine>${mem.jvm.opts}</argLine>
                                    <reuseForks>false</reuseForks>
                                    <forkCount>1</forkCount>
                                    <parallel>none</parallel>
                                    <threadCount>1</threadCount>
                                    <perCoreThreadCount>false</perCoreThreadCount>
                                    <runOrder>alphabetical</runOrder>
                                    <groups>MEMORY_TESTS</groups>
                                    <excludedGroups />
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>performance-test</id>
            <activation>
                <property>
                    <name>test.skip.perf</name>
                    <value>false</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>performance-test</id>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <phase>test</phase>
                                <configuration combine.self="override">
                                    <argLine>${default.test.jvm.opts} ${perf.jvm.opts}</argLine>
                                    <reuseForks>false</reuseForks>
                                    <forkCount>1</forkCount>
                                    <parallel>none</parallel>
                                    <threadCount>1</threadCount>
                                    <perCoreThreadCount>false</perCoreThreadCount>
                                    <runOrder>alphabetical</runOrder>
                                    <groups>PERFORMANCE_TESTS</groups>
                                    <excludedGroups />
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
