<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.neo4j</groupId>
  <artifactId>parent</artifactId>
  <version>4.4.44</version>
  <packaging>pom</packaging>
  <name>Neo4j</name>
  <description>Neo4j Graph Database</description>
  <inceptionYear>2002</inceptionYear>
  <url>http://neo4j.com/</url>

  <organization>
    <name>The Neo4j Graph Database Project</name>
    <url>https://neo4j.com/</url>
  </organization>

  <scm>
    <connection>scm:git:git://github.com/neo4j/neo4j.git</connection>
    <developerConnection>scm:git:git@github.com:neo4j/neo4j.git</developerConnection>
    <url>https://github.com/neo4j/neo4j</url>
  </scm>

  <licenses>
    <license>
      <name>GNU Affero General Public License, Version 3 with the Commons Clause</name>
      <url>http://www.gnu.org/licenses/agpl-3.0-standalone.html</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>neo4j</id>
      <name>The Neo4j Team</name>
      <url>https://neo4j.com/</url>
      <organization>Neo4j Inc.</organization>
      <organizationUrl>https://neo4j.com/</organizationUrl>
    </developer>
  </developers>

  <mailingLists>
    <mailingList>
      <name>Neo4j Community Discussions</name>
      <subscribe>https://groups.google.com/forum/#!forum/neo4j</subscribe>
    </mailingList>
  </mailingLists>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/neo4j/neo4j/issues</url>
  </issueManagement>

  <distributionManagement>
    <repository>
      <id>sonatype-nexus-staging</id>
      <name>Nexus Release Repository</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <licensing.prepend.text>licensing/notice-agpl-prefix.txt</licensing.prepend.text>
    <generate-config-docs-phase>prepare-package</generate-config-docs-phase>
    <jdk.custom.options/>
    <test.runner.jvm/>
    <test.runner.jvm.settings.additional/>
    <test.runner.jvm.settings>
      -Xmx2G
      -XX:+UseG1GC
      -XX:-OmitStackTraceInFastThrow
      -XX:+HeapDumpOnOutOfMemoryError
      -XX:+ExitOnOutOfMemoryError
      -XX:MaxInlineLevel=15
      -XX:-UseBiasedLocking
      -Djdk.nio.maxCachedBufferSize=262144
      -Dlog4j2.disable.jmx=true
      -Dio.netty.tryReflectionSetAccessible=true
      "-XX:HeapDumpPath=target/test data"
      -Dorg.neo4j.io.pagecache.tracing.cursor.DefaultPageCursorTracer.CHECK_REPORTED_COUNTERS=${cursor.counters.check}
      -Dorg.neo4j.internal.unsafe.UnsafeUtil.DIRTY_MEMORY=true
      -Dorg.neo4j.internal.unsafe.UnsafeUtil.CHECK_NATIVE_ACCESS=true
      -Dorg.neo4j.kernel.impl.store.cursor.AbstractCachedStoreCursors.CHECK_READ_CURSORS=true
      -Dorg.neo4j.io.pagecache.impl.muninn.usePreciseCursorErrorStackTraces=true
      -Dorg.neo4j.codegen.bytecode.ByteCodeExpressionVisitor.checkByteCode=false
      -Dorg.neo4j.internal.batchimport.Configuration.DEFAULT_BATCH_SIZE=10
      -Dorg.neo4j.kernel.impl.scheduler.ThreadPool.shutdownTimeout=2
      -Djunit.jupiter.extensions.autodetection.enabled=true
      -Djunit.jupiter.execution.parallel.enabled=${parallel.tests}
      -Djunit.jupiter.execution.timeout.default=${default.jupiter.test.timeout}
      -Djunit.jupiter.execution.parallel.mode.classes.default=${default.jupiter.test.mode}
      -XX:+UnlockExperimentalVMOptions
      -XX:+TrustFinalNonStaticFields
      -XX:FlightRecorderOptions=stackdepth=256
      -XX:+UnlockDiagnosticVMOptions
      -XX:+DebugNonSafepoints
      ${jdk.custom.options}
      ${test.runner.jvm.settings.additional}
    </test.runner.jvm.settings>
    <default.jupiter.test.timeout>20m</default.jupiter.test.timeout>
    <default.jupiter.test.mode>same_thread</default.jupiter.test.mode>
    <forkCounts>1</forkCounts>
    <parallel.tests>false</parallel.tests>
    <maven.build.timestamp.format>yyMMddHHmmssSSS</maven.build.timestamp.format>
    <cursor.counters.check>true</cursor.counters.check>

    <license-text.header>headers/AGPL-3-header.txt</license-text.header>

    <jamm.version>0.3.3</jamm.version>
    <lucene.version>8.11.2</lucene.version>
    <bouncycastle.version>1.78</bouncycastle.version>
    <jetty.version>9.4.57.v20241219</jetty.version>
    <scala-maven-plugin.version>4.4.0</scala-maven-plugin.version>
    <scala.version>2.12.13</scala.version>
    <scala.binary.version>2.12</scala.binary.version>
    <scala.plugin.recompileMode>all</scala.plugin.recompileMode>
    <asm.version>9.2</asm.version>
    <metrics.version>4.2.3</metrics.version>
    <scala.target.vm>1.8</scala.target.vm>
    <jersey.version>2.34</jersey.version>
    <junit.version>5.7.2</junit.version>
    <junit.platform.version>1.6.2</junit.platform.version> <!-- Surefire only supports 1.3.1, but 1.6.2 works by luck since the signatures are the same -->
    <mockito.version>3.12.4</mockito.version>
    <opencypher.version>1.0.0-M16</opencypher.version>
    <caffeine.version>3.0.3</caffeine.version>
    <required.maven.version>3.6.3</required.maven.version>
    <jackson.version>2.15.2</jackson.version>
    <amazon-sdk.version>1.12.502</amazon-sdk.version>
    <guava.version>32.0.0-jre</guava.version>
    <awaitility.version>4.1.0</awaitility.version>
    <!--    Be careful when updating Log4j version. We have workarounds for problems with shading/plugin handling
            in Log4jPluginLoadingWorkaround that must be verified to still work after bumping the version. -->
    <log4j.version>2.17.1</log4j.version>
    <slf4j.version>1.7.30</slf4j.version>
    <neo4j-java-driver.version>4.4.20</neo4j-java-driver.version>
    <skip-scalastyle>false</skip-scalastyle>
  </properties>

  <modules>
    <module>annotations</module>
    <module>build-resources</module>
    <module>community</module>
    <module>packaging</module>
  </modules>

  <build>
    <!-- Define project structure -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>${basedir}/src/main/resources/META-INF/</directory>
        <targetPath>META-INF</targetPath>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>COPYRIGHT.txt</include>
          <include>NOTICE.txt</include>
          <include>LICENSE.txt</include>
          <include>LICENSES.txt</include>
          <include>README*</include>
          <include>CHANGES.txt</include>
        </includes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
      <testResource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>COPYRIGHT.txt</include>
          <include>NOTICE.txt</include>
          <include>LICENSE.txt</include>
          <include>LICENSES.txt</include>
          <include>README*</include>
          <include>CHANGES.txt</include>
        </includes>
      </testResource>
    </testResources>

    <!-- Plugin definitions -->
    <pluginManagement>
      <plugins>

        <!-- Here we define our public API -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
          <executions>
            <execution>
              <id>generate-javadocs</id>
              <goals>
                <goal>javadoc-no-fork</goal>
              </goals>
              <phase>prepare-package</phase>
            </execution>
          </executions>
          <configuration>
            <additionalJOptions>
              <additionalJOption>-J--add-exports=jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED</additionalJOption>
              <additionalJOption>--allow-script-in-comments</additionalJOption>
            </additionalJOptions>
            <doclet>org.neo4j.annotations.api.PublicApiDoclet</doclet>
            <docletArtifact>
              <groupId>org.neo4j</groupId>
              <artifactId>annotations</artifactId>
              <version>${project.version}</version>
            </docletArtifact>

            <header>Neo4j</header>
            <doctitle>Neo4j ${project.version} API</doctitle>
            <windowtitle>Neo4j ${project.version} API</windowtitle>
            <show>public</show>

            <quiet>true</quiet>
            <reportOutputDirectory>${project.build.directory}/apidocs</reportOutputDirectory>
            <links>
              <link>https://docs.oracle.com/en/java/javase/${maven.compiler.source}/docs/api</link>
            </links>

            <!-- Defines grouping for overview -->
            <groups>
              <group>
                <title>Graph database</title>
                <packages>org.neo4j.graphdb:org.neo4j.dbms.api</packages>
              </group>
              <group>
                <title>Graph algorithms</title>
                <packages>org.neo4j.graphalgo:org.neo4j.graphalgo.*</packages>
              </group>
              <group>
                <title>Logging</title>
                <packages>org.neo4j.logging:org.neo4j.logging.*</packages>
              </group>
              <group>
                <title>Import</title>
                <packages>org.neo4j.batchinsert</packages>
              </group>
              <group>
                <title>Procedures</title>
                <packages>org.neo4j.procedure</packages>
              </group>
              <group>
                <title>Server Plugin API</title>
                <packages>org.neo4j.server:org.neo4j.server.*</packages>
              </group>
              <group>
                <title>Test Harness</title>
                <packages>org.neo4j.harness.junit*</packages>
              </group>
            </groups>

            <!-- Include the following packages... (yes, has to be one line) -->
            <subpackages>
              org.neo4j.graphalgo:org.neo4j.graphdb:org.neo4j.dbms.api:org.neo4j.server.helpers:org.neo4j.server.rest.repr:org.neo4j.server.rest.web:org.neo4j.batchinsert:org.neo4j.logging:org.neo4j.procedure:org.neo4j.harness.junit:org.neo4j.configuration
            </subpackages>
            <!-- ...unless the package contains -->
            <excludePackageNames>
              *.impl.*:*.internal.*
            </excludePackageNames>
            <bottom>
              <![CDATA[
                <script>
                  if (typeof useModuleDirectories !== 'undefined') {
                    useModuleDirectories = false;
                  }
                </script>
              ]]>
            </bottom>
          </configuration>
        </plugin>

        <!-- Testing setup -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.2</version>
          <configuration>
            <forkCount>${forkCounts}</forkCount>
            <trimStackTrace>false</trimStackTrace>
            <reuseForks>true</reuseForks>
            <argLine>${test.runner.jvm.settings}</argLine>
            <runOrder>random</runOrder>
            <systemPropertyVariables>
              <dbms.pagecache.memory.default.override>8m</dbms.pagecache.memory.default.override>
              <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
              <jdk.custom.options>${jdk.custom.options}</jdk.custom.options>
            </systemPropertyVariables>
            <jvm>${test.runner.jvm}</jvm>
            <excludes>
              <exclude>**/*$*.class</exclude>
              <exclude>**/*IntegrationTest.class</exclude>
            </excludes>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.junit.platform</groupId>
              <artifactId>junit-platform-launcher</artifactId>
              <version>${junit.platform.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>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.22.2</version>
          <configuration>
            <argLine>${test.runner.jvm.settings}</argLine>
            <forkCount>${forkCounts}</forkCount>
            <trimStackTrace>false</trimStackTrace>
            <reuseForks>true</reuseForks>
            <runOrder>random</runOrder>
            <includes>
              <include>**/IT*.class</include>
              <include>**/*IT.class</include>
              <include>**/*ITCase.class</include>
              <include>**/*IntegrationTest.class</include>
            </includes>
            <systemPropertyVariables>
              <dbms.pagecache.memory.default.override>8m</dbms.pagecache.memory.default.override>
              <port.authority.directory>${user.dir}/target/port-authority-${maven.build.timestamp}</port.authority.directory>
              <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
              <jdk.custom.options>${jdk.custom.options}</jdk.custom.options>
            </systemPropertyVariables>
            <jvm>${test.runner.jvm}</jvm>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.junit.platform</groupId>
              <artifactId>junit-platform-launcher</artifactId>
              <version>${junit.platform.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>
          </dependencies>
          <executions>
            <execution>
              <id>integration-test</id>
              <goals>
                <goal>integration-test</goal>
              </goals>
            </execution>
            <execution>
              <id>verify</id>
              <goals>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Jar file packaging settings -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
          <executions>
            <!-- Augment default jar with url -->
            <execution>
              <id>default-jar</id>
              <configuration>
                <archive>
                  <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                  </manifest>
                  <manifestEntries>
                    <Url>${project.organization.url}</Url>
                    <!--suppress UnresolvedMavenProperty -->
                    <Automatic-Module-Name>${moduleName}</Automatic-Module-Name>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
            <!-- Create test jar -->
            <execution>
              <id>create-test-jar</id>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
            <!-- Create javadoc jar, will be empty if javadoc generation is skipped -->
            <execution>
              <id>create-javadoc-jar</id>
              <phase>package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
              <configuration>
                <classifier>javadoc</classifier>
                <classesDirectory>${project.build.directory}/apidocs/</classesDirectory>
                <includes>
                  <include>**/**</include>
                </includes>
                <excludes>
                  <exclude>javadoc.sh</exclude>
                  <exclude>javadoc.bat</exclude>
                  <exclude>options</exclude>
                  <exclude>packages</exclude>
                  <exclude>argfile</exclude>
                  <exclude>files</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Licensing settings -->
        <plugin>
          <groupId>org.neo4j.build.plugins</groupId>
          <artifactId>licensing-maven-plugin</artifactId>
          <version>1.7.10</version>
          <configuration>
            <failIfDisliked>true</failIfDisliked>
            <failIfMissing>true</failIfMissing>
            <plainTextReport>true</plainTextReport>
            <prependText>${licensing.prepend.text}</prependText>
            <excludedGroups>
              ^((org.neo4j){1}|(org.neo4j.community){1}|(org.neo4j.app){1}|(org.neo4j.server.plugin){1}|(org.neo4j.assembly){1}|(org.neo4j.bolt){1}|(org.neo4j.build){1}|(org.neo4j.test){1})$
            </excludedGroups>
            <!-- temporarily disabling netty-tcnative-classes whilst licence issue is corrected-->
            <excludedArtifacts>^((neo4j-browser)|(netty-tcnative-classes))$</excludedArtifacts>
            <includedScopes>compile</includedScopes>
          </configuration>
          <executions>
            <execution>
              <id>list-all-licenses</id>
              <phase>compile</phase>
              <goals>
                <goal>check</goal>
              </goals>
              <configuration>
                <licensingRequirementFiles>
                  <licensingRequirementFile>licensing/licensing-requirements-base.xml</licensingRequirementFile>
                </licensingRequirementFiles>
                <thirdPartyLicensingFilename>${project.artifactId}-${project.version}-NOTICE.txt
                </thirdPartyLicensingFilename>
                <checkExistingNoticeFile>${project.build.directory}/../NOTICE.txt</checkExistingNoticeFile>
                <listPrependText>licensing/list-prefix.txt</listPrependText>
                <listReport>${project.artifactId}-${project.version}-LICENSES.txt</listReport>
                <checkExistingLicensesFile>${project.build.directory}/../LICENSES.txt</checkExistingLicensesFile>
              </configuration>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>org.neo4j.build</groupId>
              <artifactId>build-resources</artifactId>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>3.0</version>
          <executions>
            <execution>
              <id>check-licenses</id>
              <!-- fail as early as possible -->
              <phase>initialize</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <strictCheck>true</strictCheck>
            <header>${license-text.header}</header>
            <includes>
              <include>src/**/*.java</include>
              <include>src/**/*.js</include>
              <include>src/**/*.scala</include>
              <include>src/**/*.xml</include>
              <include>src/**/*.feature</include>
              <include>src/**/*.g4</include>
            </includes>
            <excludes>
              <exclude>**/cypher-shell/*</exclude>
              <exclude>**/apoc/*</exclude>
            </excludes>
            <mapping>
              <java>SLASHSTAR_STYLE</java>
              <scala>SLASHSTAR_STYLE</scala>
              <feature>SCRIPT_STYLE</feature>
              <g4>SLASHSTAR_STYLE</g4>
            </mapping>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.neo4j.build</groupId>
              <artifactId>build-resources</artifactId>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
        </plugin>

        <!-- Default scala compile settings -->
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>${scala-maven-plugin.version}</version>

          <configuration>
            <scalaVersion>${scala.version}</scalaVersion>
            <scalaCompatVersion>${scala.binary.version}</scalaCompatVersion>
            <recompileMode>${scala.plugin.recompileMode}</recompileMode>
            <args>
              <arg>-Xmax-classfile-name</arg>
              <arg>100</arg>
              <arg>-Xlint</arg>
              <arg>-target:jvm-${scala.target.vm}</arg>
              <arg>-nobootcp</arg>
            </args>
            <jvmArgs>
              <jvmArg>-Xms256m</jvmArg>
              <jvmArg>-Xmx1024m</jvmArg>
            </jvmArgs>
            <secondaryCacheDir>${java.io.tmpdir}</secondaryCacheDir>
          </configuration>

          <!-- This is needed to mix scala and java code in the same module -->
          <executions>
            <execution>
              <id>scala-compile</id>
              <phase>process-resources</phase>
              <goals>
                <goal>add-source</goal>
                <goal>compile</goal>
              </goals>
            </execution>
            <execution>
              <id>scala-test-compile</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>testCompile</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <!-- Enforce naming if packages -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0-M3</version>
          <configuration>
            <rules>
              <dependencyConvergence/>
              <evaluateBeanshell>
                <message>Maven module has to be in a "groupId" beginning with "org.neo4j"</message>
                <condition>{String s = "${project.groupId}"; s.startsWith("org.neo4j");}</condition>
              </evaluateBeanshell>
              <requireFilesDontExist>
                <message>You are not allowed to have classes in "com" package</message>
                <files>
                  <file>${project.build.sourceDirectory}/com</file>
                  <file>${project.build.testSourceDirectory}/com</file>
                </files>
              </requireFilesDontExist>
              <requireFilesDontExist>
                <files>
                  <file>enterprise</file>
                </files>
              </requireFilesDontExist>
                <requireMavenVersion>
                    <version>${required.maven.version}</version>
                </requireMavenVersion>
            </rules>
              <fail>true</fail>
          </configuration>
        </plugin>

        <!-- Plugin version management -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
            <compilerArgs>
              <arg>-Xpkginfo:always</arg><!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-368,-205 -->
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.2</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.shared</groupId>
              <artifactId>maven-dependency-analyzer</artifactId>
              <version>1.11.3</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
          <configuration>
            <tarLongFileMode>gnu</tarLongFileMode>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.6.0</version>
        </plugin>
        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>3.3.1</version>
          <dependencies>
            <!-- https://mvnrepository.com/artifact/org.owasp/dependency-check-maven -->
            <dependency>
              <groupId>org.owasp</groupId>
              <artifactId>dependency-check-maven</artifactId>
              <version>3.3.1</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <goals>
                <goal>aggregate</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

      </plugins>
    </pluginManagement>

    <!-- Default plugins -->
    <plugins>

      <!-- Execute integration tests by default -->
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>

      <!-- Checkstyle is always validated -->
      <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <configLocation>checkstyle/checkstyle.xml</configLocation>
          <consoleOutput>true</consoleOutput>
          <logViolationsToConsole>true</logViolationsToConsole>
          <failsOnError>true</failsOnError>
          <failOnViolation>true</failOnViolation>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>9.0</version>
          </dependency>
          <dependency>
            <groupId>org.neo4j.build</groupId>
            <artifactId>build-resources</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.neo4j</groupId>
        <artifactId>scalastyle-maven-plugin</artifactId>
        <version>1.1.1</version>
        <configuration>
          <verbose>false</verbose>
          <failOnViolation>true</failOnViolation>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <failOnWarning>false</failOnWarning>
          <sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
          <testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
          <configLocation>checkstyle/scalastyle_config.xml</configLocation>
          <skip>${skip-scalastyle}</skip>
          <inputEncoding>UTF-8</inputEncoding>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.scalastyle</groupId>
            <artifactId>scalastyle-maven-plugin</artifactId>
            <version>1.0.0</version>
          </dependency>
          <dependency>
            <groupId>org.neo4j.build</groupId>
            <artifactId>build-resources</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Creates source jar if source exits -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Always enforce -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Enable Public API checks -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0.0</version>
        <executions>
          <execution>
            <goals>
              <goal>set-system-properties</goal>
            </goals>
            <configuration>
              <properties>
                <property>
                  <name>enablePublicApiSignatureCheck</name>
                  <value>true</value>
                </property>
              </properties>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>java16AndLater</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <jdk>[16, )</jdk>
      </activation>
      <properties>
        <jdk.custom.options>
          --add-opens java.base/java.lang=ALL-UNNAMED
          --add-opens java.base/java.nio=ALL-UNNAMED
          --add-opens java.base/java.io=ALL-UNNAMED
          --add-opens java.base/java.util=ALL-UNNAMED
          --add-opens java.base/java.util.concurrent=ALL-UNNAMED
          --add-opens java.base/sun.net.www.protocol.http=ALL-UNNAMED
          --add-opens java.base/sun.nio.ch=ALL-UNNAMED
        </jdk.custom.options>
      </properties>
    </profile>

    <profile>
      <id>errorprone</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs>
                <arg>-XDcompilePolicy=simple</arg>
                <arg>-Xplugin:ErrorProne
                  -Xep:ReturnValueIgnored:WARN
                  -Xep:InvalidZoneId:WARN
                </arg>
                <arg>-Xpkginfo:always</arg><!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-368,-205 -->
              </compilerArgs>
              <annotationProcessorPaths>
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>2.4.0</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Only generate NOTICE and LICENSES files for projects with src/ directory -->
    <profile>
      <id>has-sources</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <file>
          <exists>src</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.neo4j.build.plugins</groupId>
            <artifactId>licensing-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Disable parallel execution with "-DsequentialTests" -->
    <profile>
      <id>parallelTestExecution</id>
      <activation>
        <property>
          <name>!sequentialTests</name>
        </property>
      </activation>
      <properties>
        <forkCounts>1C</forkCounts>
        <parallel.tests>true</parallel.tests>
      </properties>
    </profile>
    <profile>
      <id>zinc</id>
      <properties>
        <scala.plugin.recompileMode>incremental</scala.plugin.recompileMode>
      </properties>
    </profile>
  </profiles>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jettison</groupId>
        <artifactId>jettison</artifactId>
        <version>1.5.4</version>
      </dependency>
      <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>5.9.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-backward-codecs</artifactId>
        <version>${lucene.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${lucene.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queries</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-sandbox</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.13.0</version>
      </dependency>
      <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>${caffeine.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>io.airlift</groupId>
        <artifactId>airline</artifactId>
        <version>0.9</version>
      </dependency>
      <dependency>
        <groupId>org.hdrhistogram</groupId>
        <artifactId>HdrHistogram</artifactId>
        <version>2.1.12</version>
      </dependency>
      <dependency>
        <groupId>com.github.jbellis</groupId>
        <artifactId>jamm</artifactId>
        <version>${jamm.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bitbucket.b_c</groupId>
        <artifactId>jose4j</artifactId>
        <version>0.9.4</version>
      </dependency>
      <!--
       - Please note that when updating this dependency (i.e. due to a security vulnerability or bug) that the corresponding driver dependency also
       - needs updating.
       -->
      <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-bom</artifactId>
        <version>2023.0.15</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.neo4j.driver</groupId>
        <artifactId>neo4j-java-driver-slim</artifactId>
        <version>${neo4j-java-driver.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.directory.server</groupId>
        <artifactId>apacheds-server-integ</artifactId>
        <version>2.0.0-M21</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava-testlib</artifactId>
        <version>${guava.version}</version>
        <scope>test</scope>
      </dependency>
	  <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-testkit</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.junit.platform</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.18.1</version> <!-- 3.19.x requires junit platform 1.8.x -->
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>2.2</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>co.unruly</groupId>
        <artifactId>java-8-matchers</artifactId>
        <version>1.6</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>${awaitility.version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.16.1</version>
      </dependency>

      <dependency>
        <groupId>org.netbeans.modules</groupId>
        <artifactId>org-netbeans-lib-profiler</artifactId>
        <version>RELEASE120-1</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.openjdk.jol</groupId>
        <artifactId>jol-core</artifactId>
        <version>0.16</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.mockftpserver</groupId>
        <artifactId>MockFtpServer</artifactId>
        <version>3.1.0</version>
        <scope>test</scope>
      </dependency>

      <!-- scala -->
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-reflect</artifactId>
        <version>${scala.version}</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scalap</artifactId>
        <version>${scala.version}</version>
      </dependency>
      <dependency>
        <groupId>org.scala-lang.modules</groupId>
        <artifactId>scala-java8-compat_${scala.binary.version}</artifactId>
        <version>0.8.0</version>
      </dependency>

      <!-- scala test dependencies -->
      <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_${scala.binary.version}</artifactId>
        <version>3.0.5</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <artifactId>scala-library</artifactId>
            <groupId>org.scala-lang</groupId>
          </exclusion>
          <exclusion>
            <artifactId>scala-reflect</artifactId>
            <groupId>org.scala-lang</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.scalautils</groupId>
        <artifactId>scalautils_${scala.binary.version}</artifactId>
        <version>2.1.7</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <artifactId>scala-library</artifactId>
            <groupId>org.scala-lang</groupId>
          </exclusion>
          <exclusion>
            <artifactId>scala-reflect</artifactId>
            <groupId>org.scala-lang</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.scalacheck</groupId>
        <artifactId>scalacheck_${scala.binary.version}</artifactId>
        <version>1.14.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.json4s</groupId>
        <artifactId>json4s-native_${scala.binary.version}</artifactId>
        <version>3.6.5</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.lihaoyi</groupId>
        <artifactId>pprint_${scala.binary.version}</artifactId>
        <version>0.6.0</version>
        <scope>test</scope>
      </dependency>

      <!-- other -->
      <dependency>
        <groupId>org.eclipse.collections</groupId>
        <artifactId>eclipse-collections</artifactId>
        <version>10.4.0</version>
      </dependency>
      <dependency>
        <groupId>org.jctools</groupId>
        <artifactId>jctools-core</artifactId>
        <version>3.3.0</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.17.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <scope>test</scope>
        <version>3.6.1</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-digester3</artifactId>
        <version>3.2</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
          <exclusion>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.10.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.26.0</version>
      </dependency>
      <dependency>
        <groupId>com.github.luben</groupId>
        <artifactId>zstd-jni</artifactId>
        <version>1.5.0-4</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>4.1.119.Final</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey.version}</version>
        <exclusions>
          <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>osgi-resource-locator</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.glassfish.hk2.external</groupId>
            <artifactId>javax.inject</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version}</version>
        <exclusions>
          <exclusion>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.glassfish.hk2.external</groupId>
            <artifactId>javax.inject</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
        <version>${jersey.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.glassfish.hk2.external</groupId>
            <artifactId>aopalliance-repackaged</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.glassfish.hk2.external</groupId>
            <artifactId>javax.inject</artifactId>
          </exclusion>
          <exclusion>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.1.1</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util-ajax</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>websocket-client</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>${bouncycastle.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk18on</artifactId>
        <version>${bouncycastle.version}</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-jmx</artifactId>
        <version>${metrics.version}</version>
      </dependency>
      <dependency>
        <groupId>io.dropwizard.metrics</groupId>
        <artifactId>metrics-graphite</artifactId>
        <version>${metrics.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jprocesses</groupId>
        <artifactId>jProcesses</artifactId>
        <version>1.6.5</version>
      </dependency>

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>provided</scope>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.testing.compile</groupId>
        <artifactId>compile-testing</artifactId>
        <version>0.19</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>com.google.truth</groupId>
            <artifactId>truth</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.truth.extensions</groupId>
            <artifactId>truth-java8-extension</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.auto</groupId>
            <artifactId>auto-common</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.auto.service</groupId>
        <artifactId>auto-service</artifactId>
        <version>1.0</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.auto</groupId>
            <artifactId>auto-common</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.google.auto</groupId>
        <artifactId>auto-common</artifactId>
        <version>1.1.2</version>
      </dependency>
      <dependency>
        <groupId>com.google.truth</groupId>
        <artifactId>truth</artifactId>
        <version>1.1.3</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.2</version>
      </dependency>
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
      </dependency>
      <dependency>
        <groupId>org.neo4j</groupId>
        <artifactId>annotations</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.kohlschutter.junixsocket</groupId>
        <artifactId>junixsocket-core</artifactId>
        <version>2.3.4</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>
