<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>37</version>
    <relativePath />
  </parent>
  <groupId>org.apache.accumulo</groupId>
  <artifactId>accumulo-project</artifactId>
  <version>2.1.6</version>
  <packaging>pom</packaging>
  <name>Apache Accumulo Project</name>
  <description>Apache Accumulo is a sorted, distributed key/value store based
    on Google's BigTable design. It is built on top of Apache Hadoop,
    Zookeeper, and Thrift. It features a few novel improvements on the BigTable
    design in the form of cell-level access labels and a server-side
    programming mechanism that can modify key/value pairs at various points in
    the data management process.</description>
  <url>https://accumulo.apache.org</url>
  <!-- this is the year of inception at ASF -->
  <inceptionYear>2011</inceptionYear>
  <organization>
    <name>The Apache Software Foundation</name>
    <url>https://www.apache.org</url>
  </organization>
  <licenses>
    <license>
      <name>Apache-2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>
  <mailingLists>
    <mailingList>
      <name>User</name>
      <subscribe>user-subscribe@accumulo.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@accumulo.apache.org</unsubscribe>
      <post>user@accumulo.apache.org</post>
      <archive>https://lists.apache.org/list.html?user@accumulo.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Dev</name>
      <subscribe>dev-subscribe@accumulo.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@accumulo.apache.org</unsubscribe>
      <post>dev@accumulo.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@accumulo.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Commits</name>
      <subscribe>commits-subscribe@accumulo.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@accumulo.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?commits@accumulo.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Notifications</name>
      <subscribe>notifications-subscribe@accumulo.apache.org</subscribe>
      <unsubscribe>notifications-unsubscribe@accumulo.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?notifications@accumulo.apache.org</archive>
    </mailingList>
  </mailingLists>
  <modules>
    <module>assemble</module>
    <module>core</module>
    <module>hadoop-mapreduce</module>
    <module>iterator-test-harness</module>
    <module>minicluster</module>
    <module>server/base</module>
    <module>server/compactor</module>
    <module>server/compaction-coordinator</module>
    <module>server/gc</module>
    <module>server/manager</module>
    <module>server/master</module>
    <module>server/monitor</module>
    <module>server/native</module>
    <module>server/tserver</module>
    <module>shell</module>
    <module>start</module>
    <module>test</module>
  </modules>
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/accumulo.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/accumulo.git</developerConnection>
    <tag>rel/2.1.6</tag>
    <url>https://gitbox.apache.org/repos/asf?p=accumulo.git</url>
  </scm>
  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/apache/accumulo/issues</url>
  </issueManagement>
  <ciManagement>
    <system>GitHub Actions</system>
    <url>https://github.com/apache/accumulo/actions</url>
  </ciManagement>
  <properties>
    <!-- properties used by the accumulo build in our own POM files -->
    <accumulo.build.extraTestArgs>--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.management/java.lang.management=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/java.util.stream=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED</accumulo.build.extraTestArgs>
    <accumulo.build.javadoc.since>2.0.0,2.0.1,2.1.0,2.1.1,2.1.2,2.1.3,2.1.4,2.1.5,2.1.6</accumulo.build.javadoc.since>
    <accumulo.build.license.header><![CDATA[
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
]]></accumulo.build.license.header>
    <!-- used for filtering the java source with the current version -->
    <accumulo.build.release.version>${project.version}</accumulo.build.release.version>
    <accumulo.build.unitTestMemSize>-Xmx1G</accumulo.build.unitTestMemSize>
    <!-- avoid error shutting down built-in ForkJoinPool.commonPool() during exec:java tasks -->
    <exec.cleanupDaemonThreads>false</exec.cleanupDaemonThreads>
    <failsafe.excludedGroups />
    <failsafe.failIfNoSpecifiedTests>false</failsafe.failIfNoSpecifiedTests>
    <failsafe.forkCount>1</failsafe.forkCount>
    <failsafe.groups />
    <failsafe.reuseForks>false</failsafe.reuseForks>
    <javaVersion>11</javaVersion>
    <!-- prevent introduction of new compiler warnings -->
    <maven.compiler.failOnWarning>true</maven.compiler.failOnWarning>
    <maven.javadoc.failOnWarnings>true</maven.javadoc.failOnWarnings>
    <maven.site.deploy.skip>true</maven.site.deploy.skip>
    <maven.site.skip>true</maven.site.skip>
    <!-- surefire/failsafe plugin option -->
    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <!-- versions-maven-plugin ignore patterns for snapshots, alpha, beta, milestones, and release candidates -->
    <maven.version.ignore>.+-SNAPSHOT,(?i).*(alpha|beta)[0-9.-]*,(?i).*[.-](m|rc)[0-9]+</maven.version.ignore>
    <minimalJavaBuildVersion>21</minimalJavaBuildVersion>
    <modernizer.javaVersion>${javaVersion}</modernizer.javaVersion>
    <!-- timestamp for reproducible outputs, updated on release by the release plugin -->
    <project.build.outputTimestamp>2026-07-13T21:18:05Z</project.build.outputTimestamp>
    <rat.consoleOutput>true</rat.consoleOutput>
    <sourceReleaseAssemblyDescriptor>source-release-tar</sourceReleaseAssemblyDescriptor>
    <surefire.excludedGroups />
    <surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>
    <surefire.forkCount>1C</surefire.forkCount>
    <surefire.groups />
    <surefire.reuseForks>true</surefire.reuseForks>
    <!-- dependency and plugin versions managed with properties -->
    <version.auto-service>1.1.1</version.auto-service>
    <version.bouncycastle>1.84</version.bouncycastle>
    <version.curator>5.8.0</version.curator>
    <version.errorprone>2.41.0</version.errorprone>
    <version.hadoop>3.3.6</version.hadoop>
    <version.log4j>2.25.4</version.log4j>
    <version.opentelemetry>1.48.0</version.opentelemetry>
    <version.powermock>2.0.9</version.powermock>
    <version.slf4j>2.0.17</version.slf4j>
    <version.thrift>0.17.0</version.thrift>
    <version.zookeeper>3.9.5</version.zookeeper>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>2.18.3</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-bom</artifactId>
        <version>1.14.5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <!-- for dependency convergence between Micrometer and ZooKeeper -->
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>4.1.104.Final</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-bom</artifactId>
        <version>${version.opentelemetry}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-bom</artifactId>
        <version>9.1.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-bom</artifactId>
        <version>${version.log4j}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>11.0.23</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>hk2-bom</artifactId>
        <version>3.0.5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-bom</artifactId>
        <version>4.0.4</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jersey</groupId>
        <artifactId>jersey-bom</artifactId>
        <!-- 3.1.0 would require jakarta.ws.rs-api 3.1.0, jakartaee 9 uses 3.0.0 -->
        <version>3.0.9</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.12.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>1.82</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>classmate</artifactId>
        <version>1.6.0</version>
      </dependency>
      <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>3.2.0</version>
      </dependency>
      <dependency>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-annotations</artifactId>
        <version>4.9.3</version>
      </dependency>
      <dependency>
        <groupId>com.google.auto.service</groupId>
        <artifactId>auto-service-annotations</artifactId>
        <version>${version.auto-service}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.12.1</version>
      </dependency>
      <dependency>
        <!-- converge transitive dependency version between guava and caffeine -->
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_annotations</artifactId>
        <version>${version.errorprone}</version>
      </dependency>
      <dependency>
        <!-- this is a runtime dependency of guava, no longer included with guava as of 27.1 -->
        <groupId>com.google.guava</groupId>
        <artifactId>failureaccess</artifactId>
        <version>1.0.2</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>33.4.6-jre</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>3.25.6</version>
      </dependency>
      <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>4.0.0</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.9.0</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.22.0</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.22.0</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.3.5</version>
      </dependency>
      <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.10.0</version>
      </dependency>
      <dependency>
        <groupId>io.opentelemetry.javaagent</groupId>
        <artifactId>opentelemetry-javaagent</artifactId>
        <!-- This version was selected because it aligns with the version of open telemetry that Accumulo 2.1 is using. -->
        <version>2.14.0</version>
      </dependency>
      <dependency>
        <groupId>io.opentelemetry.proto</groupId>
        <artifactId>opentelemetry-proto</artifactId>
        <!-- This version was selected because it aligns with the version of protocol buffers that Accumulo 2.1 is using. -->
        <version>1.3.2-alpha</version>
      </dependency>
      <dependency>
        <!-- legacy junit version specified here for dependency convergence -->
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-compaction-coordinator</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-compactor</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-gc</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-hadoop-mapreduce</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-iterator-test-harness</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-manager</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-minicluster</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-monitor</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-native</artifactId>
        <version>${project.version}</version>
        <type>tar.gz</type>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-server-base</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-shell</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-start</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-test</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-tracer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-tserver</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>2.15.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-jci-core</artifactId>
        <version>1.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-jci-fam</artifactId>
        <version>1.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.20.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>3.6.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.15.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-vfs2</artifactId>
        <version>2.9.0</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs-client</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>${version.curator}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-test</artifactId>
        <version>${version.curator}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.datasketches</groupId>
        <artifactId>datasketches-java</artifactId>
        <version>4.1.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${version.hadoop}</version>
        <exclusions>
          <exclusion>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client-api</artifactId>
        <version>${version.hadoop}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client-minicluster</artifactId>
        <version>${version.hadoop}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client-runtime</artifactId>
        <version>${version.hadoop}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-distcp</artifactId>
        <version>${version.hadoop}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-minicluster</artifactId>
        <version>${version.hadoop}</version>
        <exclusions>
          <exclusion>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-minikdc</artifactId>
        <version>${version.hadoop}</version>
        <exclusions>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-tools</artifactId>
        <version>${version.hadoop}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libthrift</artifactId>
        <version>${version.thrift}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${version.zookeeper}</version>
        <exclusions>
          <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
          </exclusion>
          <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper-jute</artifactId>
        <version>${version.zookeeper}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk18on</artifactId>
        <version>${version.bouncycastle}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>${version.bouncycastle}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcutil-jdk18on</artifactId>
        <version>${version.bouncycastle}</version>
      </dependency>
      <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-qual</artifactId>
        <version>3.49.2</version>
      </dependency>
      <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>5.5.0</version>
      </dependency>
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.34</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.el</artifactId>
        <version>4.0.2</version>
      </dependency>
      <dependency>
        <groupId>org.hdrhistogram</groupId>
        <artifactId>HdrHistogram</artifactId>
        <version>2.1.12</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>8.0.1.Final</version>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.30.1-GA</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.5.3.Final</version>
      </dependency>
      <dependency>
        <!-- force convergence of transitive dependency of hibernate-validator -->
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging-annotations</artifactId>
        <version>2.2.1.Final</version>
      </dependency>
      <dependency>
        <!-- force convergence of transitive dependency of hibernate-validator -->
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging-processor</artifactId>
        <version>2.2.1.Final</version>
      </dependency>
      <dependency>
        <groupId>org.jline</groupId>
        <artifactId>jline</artifactId>
        <version>3.25.1</version>
      </dependency>
      <dependency>
        <groupId>org.latencyutils</groupId>
        <artifactId>LatencyUtils</artifactId>
        <version>2.0.3</version>
        <exclusions>
          <exclusion>
            <groupId>org.hdrhistogram</groupId>
            <artifactId>HdrHistogram</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!-- converge transitive dependency version between powermock and easymock -->
        <groupId>org.objenesis</groupId>
        <artifactId>objenesis</artifactId>
        <version>3.3</version>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-easymock</artifactId>
        <version>${version.powermock}</version>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-core</artifactId>
        <version>${version.powermock}</version>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${version.powermock}</version>
      </dependency>
      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-reflect</artifactId>
        <version>${version.powermock}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
      <dependency>
        <!-- version specified to converge transitive dependency of hadoop and curator -->
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <version>1.1.10.5</version>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>2.4</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-annotations</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <!-- needed for compile-time annotations only -->
      <groupId>com.google.auto.service</groupId>
      <artifactId>auto-service-annotations</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>
  <build>
    <pluginManagement>
      <plugins>
        <!-- check for version updates with 'mvn versions:display-plugin-updates' -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.21.0</version>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>5.0.0</version>
          <configuration>
            <licenseSets>
              <licenseSet>
                <inlineHeader>${accumulo.build.license.header}</inlineHeader>
                <includes>
                  <!-- override some of the default exclusions -->
                  <include>**/*.md</include>
                  <include>**/.github</include>
                  <include>**/.github/**</include>
                </includes>
                <excludes combine.children="append">
                  <exclude>**/.github/ISSUE_TEMPLATE/**</exclude>
                  <exclude>**/DEPENDENCIES</exclude>
                  <exclude>**/LICENSE</exclude>
                  <exclude>**/NOTICE</exclude>
                  <exclude>**/target/**</exclude>
                  <exclude>**/*.rf</exclude>
                </excludes>
              </licenseSet>
            </licenseSets>
            <mapping combine.children="append">
              <!-- general mappings; module-specific mappings appear in their respective pom -->
              <Makefile>SCRIPT_STYLE</Makefile>
              <c>SLASHSTAR_STYLE</c>
              <cc>SLASHSTAR_STYLE</cc>
              <css>SLASHSTAR_STYLE</css>
              <h>SLASHSTAR_STYLE</h>
              <java>SLASHSTAR_STYLE</java>
              <md>XML_STYLE</md>
              <proto>SLASHSTAR_STYLE</proto>
              <thrift>SLASHSTAR_STYLE</thrift>
            </mapping>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.gaul</groupId>
          <artifactId>modernizer-maven-plugin</artifactId>
          <!-- newer versions suggest changes not worth the effort in 2.1 -->
          <version>2.9.0</version>
        </plugin>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>4.9.8.2</version>
          <configuration>
            <xmlOutput>true</xmlOutput>
            <effort>Max</effort>
            <failOnError>true</failOnError>
            <includeTests>true</includeTests>
            <maxHeap>1024</maxHeap>
            <maxRank>16</maxRank>
            <omitVisitors>ConstructorThrow,SharedVariableAtomicityDetector</omitVisitors>
            <jvmArgs>-Dcom.overstock.findbugs.ignore=com.google.common.util.concurrent.RateLimiter,com.google.common.hash.Hasher,com.google.common.hash.HashCode,com.google.common.hash.HashFunction,com.google.common.hash.Hashing,com.google.common.cache.Cache,com.google.common.io.CountingOutputStream,com.google.common.io.ByteStreams,com.google.common.cache.LoadingCache,com.google.common.base.Stopwatch,com.google.common.cache.RemovalNotification,com.google.common.util.concurrent.Uninterruptibles,com.google.common.reflect.ClassPath,com.google.common.reflect.ClassPath$ClassInfo,com.google.common.base.Throwables,com.google.common.collect.Iterators</jvmArgs>
            <plugins combine.children="append">
              <plugin>
                <groupId>com.overstock.findbugs</groupId>
                <artifactId>library-detectors</artifactId>
                <version>1.2.0</version>
              </plugin>
            </plugins>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.ekryd.sortpom</groupId>
          <artifactId>sortpom-maven-plugin</artifactId>
          <version>4.0.0</version>
          <configuration>
            <createBackupFile>false</createBackupFile>
            <expandEmptyElements>false</expandEmptyElements>
            <keepBlankLines>false</keepBlankLines>
            <lineSeparator>\n</lineSeparator>
            <nrOfIndentSpace>2</nrOfIndentSpace>
            <predefinedSortOrder>recommended_2008_06</predefinedSortOrder>
            <sortDependencies>scope,groupId,artifactId</sortDependencies>
            <sortProperties>true</sortProperties>
            <spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
            <verifyFail>Stop</verifyFail>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.koraktor</groupId>
          <artifactId>mavanagaiata</artifactId>
          <version>1.1.2</version>
          <configuration>
            <skipNoGit>true</skipNoGit>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
            <compilerArgs>
              <arg>-Xlint:all</arg>
              <arg>-Xlint:-processing</arg>
              <!-- suppress try to ignore unused variable in try-with-resources -->
              <arg>-Xlint:-try</arg>
              <!-- suppress too many false positives, including generated thrift code -->
              <arg>-Xlint:-this-escape</arg>
              <arg>-Xmaxwarns</arg>
              <arg>5</arg>
            </compilerArgs>
            <annotationProcessorPaths combine.children="append">
              <path>
                <groupId>com.google.auto.service</groupId>
                <artifactId>auto-service</artifactId>
                <version>${version.auto-service}</version>
              </path>
            </annotationProcessorPaths>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
            <archive>
              <manifestEntries>
                <Automatic-Module-Name>${accumulo.build.module.name}</Automatic-Module-Name>
                <Implementation-Build>${mvngit.commit.id}</Implementation-Build>
                <Sealed>true</Sealed>
              </manifestEntries>
            </archive>
            <excludes>
              <exclude>**/log4j2-test.properties</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <quiet>true</quiet>
            <additionalJOption>-J-Xmx512m</additionalJOption>
            <additionalOptions>
              <additionalOption>--since "${accumulo.build.javadoc.since}"</additionalOption>
              <additionalOption>--since-label "New API since ${accumulo.build.javadoc.since.first}"</additionalOption>
            </additionalOptions>
            <doclint>all,-missing</doclint>
            <legacyMode>true</legacyMode>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <goals>clean deploy</goals>
            <preparationGoals>clean package</preparationGoals>
            <tagNameFormat>rel/@{project.version}</tagNameFormat>
            <preparationProfiles>apache-release,accumulo-release,!autoformat,verifyformat,thrift</preparationProfiles>
            <releaseProfiles>apache-release,accumulo-release,!autoformat,verifyformat,thrift</releaseProfiles>
            <useReleaseProfile>false</useReleaseProfile>
            <pushChanges>false</pushChanges>
            <localCheckout>true</localCheckout>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <forkCount>${surefire.forkCount}</forkCount>
            <reuseForks>${surefire.reuseForks}</reuseForks>
            <excludedGroups>${surefire.excludedGroups}</excludedGroups>
            <groups>${surefire.groups}</groups>
            <systemPropertyVariables combine.children="append">
              <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
            </systemPropertyVariables>
            <argLine>${accumulo.build.unitTestMemSize} ${accumulo.build.extraTestArgs}</argLine>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <forkCount>${failsafe.forkCount}</forkCount>
            <reuseForks>${failsafe.reuseForks}</reuseForks>
            <excludedGroups>${failsafe.excludedGroups}</excludedGroups>
            <groups>${failsafe.groups}</groups>
            <systemPropertyVariables combine.children="append">
              <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
            </systemPropertyVariables>
            <argLine>${accumulo.build.extraTestArgs}</argLine>
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.6.1</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.6.3</version>
        </plugin>
        <plugin>
          <groupId>net.revelc.code</groupId>
          <artifactId>apilyzer-maven-plugin</artifactId>
          <version>1.3.0</version>
        </plugin>
        <plugin>
          <groupId>net.revelc.code.formatter</groupId>
          <artifactId>formatter-maven-plugin</artifactId>
          <version>2.29.0</version>
          <configuration>
            <compilerCompliance>${javaVersion}</compilerCompliance>
            <compilerSource>${javaVersion}</compilerSource>
            <compilerTargetPlatform>${javaVersion}</compilerTargetPlatform>
            <configFile>${rootlocation}/src/build/eclipse-codestyle.xml</configFile>
            <excludes>
              <exclude>**/thrift/*.java</exclude>
              <exclude>**/proto/*.java</exclude>
            </excludes>
            <lineEnding>LF</lineEnding>
            <skipCssFormatting>true</skipCssFormatting>
            <skipHtmlFormatting>true</skipHtmlFormatting>
            <skipJsFormatting>true</skipJsFormatting>
            <skipJsonFormatting>true</skipJsonFormatting>
            <skipXmlFormatting>true</skipXmlFormatting>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes combine.children="append">
              <exclude>src/main/resources/META-INF/services/*</exclude>
              <exclude>nbproject/**</exclude>
              <exclude>nb-configuration.xml</exclude>
              <exclude>nbactions.xml</exclude>
              <exclude>.vscode/**</exclude>
              <exclude>.factorypath</exclude>
              <exclude>.github/**</exclude>
              <exclude>**/*.rf</exclude>
            </excludes>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-site-renderer</artifactId>
              <version>2.0.0</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>net.revelc.code</groupId>
          <artifactId>warbucks-maven-plugin</artifactId>
          <version>1.1.2</version>
        </plugin>
        <plugin>
          <groupId>net.revelc.code</groupId>
          <artifactId>impsort-maven-plugin</artifactId>
          <version>1.13.0</version>
          <configuration>
            <removeUnused>true</removeUnused>
            <groups>java.,javax.,jakarta.,org.,com.</groups>
            <excludes>
              <exclude>**/thrift/*.java</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>analyze</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>true</failOnWarning>
              <ignoredUsedUndeclaredDependencies combine.children="append">
                <!-- used/undeclared child jars brought in by parents below -->
                <undeclared>org.apache.curator:curator-client:jar:*</undeclared>
                <undeclared>org.apache.hadoop:hadoop-common:jar:*</undeclared>
                <undeclared>org.apache.hadoop:hadoop-hdfs:*:*</undeclared>
                <undeclared>org.apache.hadoop:hadoop-mapreduce-client-core:jar:*</undeclared>
                <undeclared>org.apache.hadoop:hadoop-auth:jar:*</undeclared>
                <undeclared>org.apache.httpcomponents:httpcore:jar:*</undeclared>
                <undeclared>org.powermock:powermock-core:jar:*</undeclared>
                <undeclared>org.powermock:powermock-reflect:jar:*</undeclared>
                <!-- This should be removed upon completion of migrating junit 4 to 5 -->
                <undeclared>junit:junit:jar:*</undeclared>
              </ignoredUsedUndeclaredDependencies>
              <ignoredUnusedDeclaredDependencies combine.children="append">
                <!-- auto-service annotations may or may not be used in each module -->
                <unused>com.google.auto.service:auto-service-annotations:jar:*</unused>
                <!-- unused/declared implementation jars or parent jars that bring in children -->
                <unused>org.apache.hadoop:hadoop-client:jar:*</unused>
                <unused>org.apache.hadoop:hadoop-client-runtime:jar:*</unused>
                <unused>org.apache.hadoop:hadoop-minicluster:jar:*</unused>
                <unused>org.glassfish.jaxb:txw2:jar:*</unused>
                <unused>org.glassfish.jersey.ext:jersey-bean-validation:jar:*</unused>
                <unused>org.glassfish.jersey.inject:jersey-hk2:jar:*</unused>
                <unused>org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:jar:*</unused>
                <unused>org.powermock:powermock-api-easymock:jar:*</unused>
                <!-- spotbugs annotations may or may not be used in each module -->
                <unused>com.github.spotbugs:spotbugs-annotations:jar:*</unused>
                <!-- ignore unused native; analysis isn't possible with tar.gz dependency -->
                <unused>org.apache.accumulo:accumulo-native:tar.gz:*</unused>
                <!-- ignore runtime log4j dependencies at test scope -->
                <unused>org.apache.logging.log4j:log4j-1.2-api:jar:*</unused>
                <unused>org.apache.logging.log4j:log4j-slf4j2-impl:jar:*</unused>
                <unused>org.apache.logging.log4j:log4j-web:jar:*</unused>
                <!-- This should be removed upon completion of migrating junit 4 to 5 -->
                <unused>org.junit.vintage:junit-vintage-engine:jar:*</unused>
                <unused>org.junit.jupiter:junit-jupiter-engine:jar:*</unused>
                <unused>org.lz4:lz4-java:jar:*</unused>
                <!-- This is only used at runtime only by test, not at compile time  -->
                <unused>io.opentelemetry.javaagent:opentelemetry-javaagent:jar:*</unused>
              </ignoredUnusedDeclaredDependencies>
            </configuration>
          </execution>
          <execution>
            <id>analyze-exclusions</id>
            <goals>
              <goal>analyze-exclusions</goal>
            </goals>
            <configuration>
              <exclusionFail>true</exclusionFail>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <!-- create property named 'rootlocation' to point to top of multi-module project -->
            <id>create-rootlocation-property</id>
            <goals>
              <goal>rootlocation</goal>
            </goals>
          </execution>
          <execution>
            <id>create-automatic-module-name</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>accumulo.build.module.name</name>
              <regex>-</regex>
              <replacement>.</replacement>
              <value>org-apache-${project.artifactId}</value>
            </configuration>
          </execution>
          <execution>
            <id>find-first-javadoc-since-version</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>accumulo.build.javadoc.since.first</name>
              <regex>,.*</regex>
              <replacement />
              <value>${accumulo.build.javadoc.since}</value>
              <failIfNoMatch>false</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-accumulo-rules</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>validate</phase>
            <configuration>
              <rules>
                <reactorModuleConvergence />
                <banDuplicatePomDependencyVersions />
                <dependencyConvergence />
                <banDynamicVersions>
                  <ignores>
                    <!-- ignore our own SNAPSHOT versions during development -->
                    <ignore>org.apache.accumulo:*:${project.version}</ignore>
                  </ignores>
                </banDynamicVersions>
                <bannedDependencies>
                  <excludes>
                    <!-- we redirect logging to log4j2, so we should have those bridges instead -->
                    <!-- commons-logging is allowed because it natively sends to log4j2 or slf4j -->
                    <exclude>ch.qos.logback:*</exclude>
                    <exclude>ch.qos.reload4j:*</exclude>
                    <exclude>log4j:*</exclude>
                    <!-- exclude log4j-slf4j-impl to prefer log4j-slf4j2-impl -->
                    <exclude>org.apache.logging.log4j:log4j-slf4j-impl</exclude>
                    <exclude>org.apache.logging.log4j:log4j-to-slf4j</exclude>
                    <exclude>org.slf4j:*</exclude>
                  </excludes>
                  <includes>
                    <!-- only allow API jar for slf4j, but no other slf4j implementations -->
                    <include>org.slf4j:slf4j-api</include>
                  </includes>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.gaul</groupId>
        <artifactId>modernizer-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>modernizer</id>
            <goals>
              <goal>modernizer</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <checkstyleRules>
            <module name="Checker">
              <property name="charset" value="UTF-8" />
              <property name="severity" value="warning" />
              <!-- Checks for whitespace                               -->
              <!-- See https://checkstyle.sourceforge.io/config_whitespace.html -->
              <module name="FileTabCharacter" />
              <module name="TreeWalker">
                <module name="OneTopLevelClass" />
                <module name="RegexpSinglelineJava">
                  <property name="format" value="\s+$" />
                  <property name="message" value="Line has trailing whitespace." />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="[@]see\s+[{][@]link" />
                  <property name="message" value="Javadoc @see does not need @link: pick one or the other." />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="jline[.]internal[.]Preconditions" />
                  <property name="message" value="Please use Guava Preconditions not JLine" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="org[.]apache[.]commons[.]math[.]" />
                  <property name="message" value="Use commons-math3 (org.apache.commons.math3.*)" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="junit[.]framework[.]TestCase" />
                  <property name="message" value="Use JUnit4+ @Test annotation instead of TestCase" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="import org[.]junit[.]Assert;" />
                  <property name="message" value="Use static imports for Assert.* methods for consistency" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="org[.]junit[.]jupiter[.]api[.]Assertions;" />
                  <property name="message" value="Use static imports for Assertions.* methods for consistency" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="import org[.]junit[.]Assume;" />
                  <property name="message" value="Use static imports for Assume.* methods for consistency" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="org[.]junit[.]jupiter[.]api[.]Assumptions;" />
                  <property name="message" value="Use static imports for Assumptions.* methods for consistency" />
                </module>
                <module name="RegexpSinglelineJava">
                  <property name="format" value="import java[.]nio[.]charset[.]StandardCharsets;" />
                  <property name="message" value="Use static imports for StandardCharsets.* constants for consistency" />
                </module>
                <module name="RegexpSinglelineJava">
                  <!-- double escape quotes because checkstyle passes these through another xml parser -->
                  <property name="format" value="&amp;quot; [+] &amp;quot;" />
                  <property name="message" value="Unnecessary concatenation of string literals" />
                </module>
                <module name="OuterTypeFilename" />
                <module name="AvoidStarImport" />
                <module name="NoLineWrap" />
                <module name="LeftCurly" />
                <module name="RightCurly">
                  <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT" />
                </module>
                <module name="SeparatorWrap">
                  <property name="tokens" value="DOT" />
                  <property name="option" value="nl" />
                </module>
                <module name="SeparatorWrap">
                  <property name="tokens" value="COMMA" />
                  <property name="option" value="EOL" />
                </module>
                <module name="PackageName">
                  <property name="format" value="^[a-z]+(\.[a-z][a-zA-Z0-9]*)*$" />
                </module>
                <module name="MethodTypeParameterName">
                  <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" />
                </module>
                <module name="NonEmptyAtclauseDescription" />
                <module name="JavadocMethod">
                  <property name="allowMissingParamTags" value="true" />
                  <property name="allowMissingReturnTag" value="true" />
                  <property name="allowedAnnotations" value="Override,Test,BeforeClass,AfterClass,Before,After,BeforeAll,AfterAll,BeforeEach,AfterEach" />
                </module>
                <module name="MissingOverrideCheck" />
                <!--Require braces for all control statements -->
                <module name="NeedBraces" />
              </module>
            </module>
          </checkstyleRules>
          <violationSeverity>warning</violationSeverity>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <excludes>**/thrift/*.java,**/proto/*.java</excludes>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>11.0.1</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>check-style</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.koraktor</groupId>
        <artifactId>mavanagaiata</artifactId>
        <executions>
          <execution>
            <id>git-commit</id>
            <goals>
              <goal>commit</goal>
            </goals>
            <phase>validate</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <id>run-integration-tests</id>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>run-spotbugs</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>check-licenses</id>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>prepare-package</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code</groupId>
        <artifactId>warbucks-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>check-junit-tags-on-its</id>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <rules>
                <rule>
                  <includeMainClasses>true</includeMainClasses>
                  <includeTestClasses>true</includeTestClasses>
                  <classPattern>.*IT</classPattern>
                  <classAnnotationPattern>org[.]junit[.]jupiter[.]api[.]Tag</classAnnotationPattern>
                </rule>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <!-- This profile skips all Quality Assurance checks; activate with -PskipQA OR -DskipQA  -->
      <id>skipQA</id>
      <activation>
        <property>
          <name>skipQA</name>
        </property>
      </activation>
      <properties>
        <apilyzer.skip>true</apilyzer.skip>
        <checkstyle.skip>true</checkstyle.skip>
        <formatter.skip>true</formatter.skip>
        <impsort.skip>true</impsort.skip>
        <mdep.analyze.skip>true</mdep.analyze.skip>
        <modernizer.skip>true</modernizer.skip>
        <rat.skip>true</rat.skip>
        <skipITs>true</skipITs>
        <skipTests>true</skipTests>
        <sort.skip>true</sort.skip>
        <spotbugs.skip>true</spotbugs.skip>
        <warbucks.skip>true</warbucks.skip>
      </properties>
    </profile>
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>analyze-only</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>exec</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.gaul</groupId>
                        <artifactId>modernizer-maven-plugin</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>modernizer</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>com.github.koraktor</groupId>
                        <artifactId>mavanagaiata</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>commit</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>com.mycila</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>check</goal>
                          <goal>format</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>accumulo-release</id>
      <properties>
        <!-- some properties to make the release build a bit faster -->
        <checkstyle.skip>true</checkstyle.skip>
        <skipITs>true</skipITs>
        <skipTests>true</skipTests>
        <spotbugs.skip>true</spotbugs.skip>
      </properties>
    </profile>
    <profile>
      <!-- set proper source assembly name with apache-release and don't attach here -->
      <id>apache-release</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
              <inherited>false</inherited>
              <configuration>
                <!-- source assembly gets attached in the assemble module -->
                <attach>false</attach>
                <finalName>accumulo-${project.version}</finalName>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <!-- off by default, but enable with '-P verifyformat' or '-DverifyFormat' -->
      <id>verifyformat</id>
      <activation>
        <property>
          <name>verifyFormat</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.ekryd.sortpom</groupId>
            <artifactId>sortpom-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>verify-sorted-pom</id>
                <goals>
                  <goal>verify</goal>
                </goals>
                <phase>process-resources</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>verify-license-headers</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <phase>process-test-resources</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>net.revelc.code.formatter</groupId>
            <artifactId>formatter-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>verify-formatted-java-source</id>
                <goals>
                  <goal>validate</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>net.revelc.code</groupId>
            <artifactId>impsort-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>verify-sorted-imports</id>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!-- on by default, but disable with '-P !autoformat' or '-DskipFormat' -->
      <id>autoformat</id>
      <activation>
        <property>
          <name>!skipFormat</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.ekryd.sortpom</groupId>
            <artifactId>sortpom-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>sort-pom</id>
                <goals>
                  <goal>sort</goal>
                </goals>
                <phase>process-sources</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>license-headers</id>
                <goals>
                  <goal>format</goal>
                </goals>
                <phase>process-test-resources</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>net.revelc.code.formatter</groupId>
            <artifactId>formatter-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>format-java-source</id>
                <goals>
                  <goal>format</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>net.revelc.code</groupId>
            <artifactId>impsort-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>sort-imports</id>
                <goals>
                  <goal>sort</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!-- Minimal testing profile. (a.k.a. SunnyDay) -->
      <id>sunny</id>
      <properties>
        <failsafe.groups>SunnyDay</failsafe.groups>
      </properties>
    </profile>
    <profile>
      <!-- mvn clean package javadoc:aggregate -DskipTests -Paggregate-javadocs -->
      <id>aggregate-javadocs</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <sourceFileIncludes>
                  <sourceFileInclude>**/org/apache/accumulo/core/client/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/core/data/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/core/iterators/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/core/security/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/core/spi/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/hadoop/**/*.java</sourceFileInclude>
                  <sourceFileInclude>**/org/apache/accumulo/minicluster/**/*.java</sourceFileInclude>
                </sourceFileIncludes>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>add-thrift-java-source</id>
      <activation>
        <file>
          <exists>src/main/thrift-gen-java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-thrift-java-source</id>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                  <sources>
                    <source>src/main/thrift-gen-java</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>add-spotbugs-excludes</id>
      <activation>
        <file>
          <exists>src/main/spotbugs/exclude-filter.xml</exists>
        </file>
      </activation>
      <properties>
        <spotbugs.excludeFilterFile>src/main/spotbugs/exclude-filter.xml</spotbugs.excludeFilterFile>
      </properties>
    </profile>
    <profile>
      <id>sec-bugs</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <configuration>
              <plugins>
                <plugin>
                  <groupId>com.h3xstream.findsecbugs</groupId>
                  <artifactId>findsecbugs-plugin</artifactId>
                  <version>1.14.0</version>
                </plugin>
              </plugins>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>forkCount</id>
      <activation>
        <property>
          <name>forkCount</name>
        </property>
      </activation>
      <properties>
        <failsafe.forkCount>${forkCount}</failsafe.forkCount>
        <surefire.forkCount>${forkCount}</surefire.forkCount>
      </properties>
    </profile>
    <profile>
      <id>reuseForks</id>
      <activation>
        <property>
          <name>reuseForks</name>
        </property>
      </activation>
      <properties>
        <failsafe.reuseForks>${reuseForks}</failsafe.reuseForks>
        <surefire.reuseForks>${reuseForks}</surefire.reuseForks>
      </properties>
    </profile>
    <profile>
      <!--
        Explicitly add the log4j annotation processor to generate the Log4jPlugins.dat file for the
        AccumuloMonitorAppender, but only when not using the errorprone profile. This is necessary
        because log4j added a GraalVMProcessor that we don't need and won't run without failing the
        build, so we need to itemize all the processors we do want to run. Except, I couldn't get
        errorprone to work when I tried to itemize its processors, so errorprone needs to rely on
        the normal autodiscovery process. Since that would pick up the unwanted GraalVMProcessor,
        this profile exists to avoid adding log4j-core to the processors when using errorprone.
        This prevents using the AccumuloMonitorAppender when using the errorprone profile.
        Activate the errorprone profile and de-activate this one simultaneously by using:
        `mvn -Derrorprone` or `mvn -Perrorprone,!generate-log4j-plugin-data`
      -->
      <id>generate-log4j-plugin-data</id>
      <activation>
        <property>
          <name>!errorprone</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <annotationProcessorPaths>
                <path>
                  <groupId>org.apache.logging.log4j</groupId>
                  <artifactId>log4j-core</artifactId>
                  <version>${version.log4j}</version>
                </path>
              </annotationProcessorPaths>
              <annotationProcessors>
                <annotationProcessor>com.google.auto.service.processor.AutoServiceProcessor</annotationProcessor>
                <annotationProcessor>org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor</annotationProcessor>
              </annotationProcessors>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!-- This profile uses the Google ErrorProne tool to perform static code analysis at
      compile time. Auto-generated code is not checked.
      See: https://errorprone.info/bugpatterns for list of available bug patterns.-->
      <id>errorprone</id>
      <activation>
        <property>
          <name>errorprone</name>
        </property>
      </activation>
      <properties>
        <!-- forking is required for -J options to take effect -->
        <maven.compiler.fork>true</maven.compiler.fork>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs>
                <arg>-XDcompilePolicy=simple</arg>
                <arg>-XDaddTypeAnnotationsToSymbol=true</arg>
                <arg>--should-stop=ifError=FLOW</arg>
                <arg>
                  -Xplugin:ErrorProne \
                  -XepExcludedPaths:.*/(proto|thrift|generated-sources|src/test)/.* \
                  -XepDisableWarningsInGeneratedCode \
                  -XepDisableAllWarnings \
                  <!-- ERROR patterns to specifically ignore -->
                  -Xep:MustBeClosedChecker:OFF \
                  -Xep:UnicodeInCode:OFF \
                  <!-- WARNING patterns to specifically check -->
                  -Xep:ExpectedExceptionChecker \
                  <!-- treat following warning as an error -->
                  -Xep:FutureReturnValueIgnored:ERROR \
                  -Xep:MissingOverride \
                  <!--WARN if braces are missing for control statements -->
                  -Xep:MissingBraces:WARN \
                  <!-- Items containing 'OFF' are currently Errors flagged by ErrorProne. The 'OFF'
                  can be removed and the project recompiled to discover location of errors for
                  further analysis. @SuppressWarnings can be used to ignore errors if desired. -->
                </arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>
                <arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>
                <arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>
              </compilerArgs>
              <annotationProcessorPaths>
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>${version.errorprone}</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
