<?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>31</version>
  </parent>
  <groupId>org.apache.accumulo</groupId>
  <artifactId>accumulo-project</artifactId>
  <version>2.1.3</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.3</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>
    <!-- used for filtering the java source with the current version -->
    <accumulo.release.version>${project.version}</accumulo.release.version>
    <!-- avoid error shutting down built-in ForkJoinPool.commonPool() during exec:java tasks -->
    <exec.cleanupDaemonThreads>false</exec.cleanupDaemonThreads>
    <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.concurrent.atomic=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED</extraTestArgs>
    <failsafe.excludedGroups />
    <failsafe.failIfNoSpecifiedTests>false</failsafe.failIfNoSpecifiedTests>
    <failsafe.forkCount>1</failsafe.forkCount>
    <failsafe.groups />
    <failsafe.reuseForks>false</failsafe.reuseForks>
    <!-- prevent introduction of new compiler warnings -->
    <maven.compiler.failOnWarning>true</maven.compiler.failOnWarning>
    <maven.compiler.release>11</maven.compiler.release>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <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>17</minimalJavaBuildVersion>
    <!-- timestamp for reproducible outputs, updated on release by the release plugin -->
    <project.build.outputTimestamp>2024-07-29T06:01:36Z</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>
    <unitTestMemSize>-Xmx1G</unitTestMemSize>
    <!-- dependency and plugin versions managed with properties -->
    <version.auto-service>1.1.1</version.auto-service>
    <version.bouncycastle>1.78.1</version.bouncycastle>
    <version.curator>5.5.0</version.curator>
    <version.errorprone>2.24.1</version.errorprone>
    <version.hadoop>3.3.6</version.hadoop>
    <version.opentelemetry>1.34.1</version.opentelemetry>
    <version.powermock>2.0.9</version.powermock>
    <version.slf4j>2.0.12</version.slf4j>
    <version.thrift>0.17.0</version.thrift>
    <version.zookeeper>3.9.2</version.zookeeper>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>2.16.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-bom</artifactId>
        <version>1.12.2</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>2.23.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>11.0.19</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.10.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.1.8</version>
      </dependency>
      <dependency>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-annotations</artifactId>
        <version>4.8.3</version>
      </dependency>
      <dependency>
        <groupId>com.google.auto.service</groupId>
        <artifactId>auto-service</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.10.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.0.0-jre</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>3.22.0</version>
      </dependency>
      <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <!-- log4j doesn't support 4 yet; see https://github.com/apache/logging-log4j2/issues/1829 -->
        <version>3.4.4</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.6.0</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.16.0</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.15.1</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.3.3</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.10.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.14.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.11.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.checkerframework</groupId>
        <artifactId>checker-qual</artifactId>
        <version>3.42.0</version>
      </dependency>
      <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>5.2.0</version>
      </dependency>
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.32</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.2</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-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.16.2</version>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>4.3</version>
          <configuration>
            <licenseSets>
              <licenseSet>
                <header>${rootlocation}/src/build/license-header.txt</header>
                <excludes combine.children="append">
                  <exclude>**/DEPENDENCIES</exclude>
                  <exclude>**/LICENSE</exclude>
                  <exclude>**/NOTICE</exclude>
                  <exclude>**/target/**</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>
              <proto>SLASHSTAR_STYLE</proto>
              <thrift>SLASHSTAR_STYLE</thrift>
            </mapping>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.gaul</groupId>
          <artifactId>modernizer-maven-plugin</artifactId>
          <version>2.7.0</version>
          <configuration>
            <javaVersion>${maven.compiler.target}</javaVersion>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>4.7.3.6</version>
          <configuration>
            <xmlOutput>true</xmlOutput>
            <effort>Max</effort>
            <failOnError>true</failOnError>
            <includeTests>true</includeTests>
            <maxRank>16</maxRank>
            <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>3.3.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.0.1</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>
              <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 modules do not work with the javadoc plugin - see MJAVADOC-707 -->
                <!-- Automatic-Module-Name>${accumulo.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>
            <doclint>all,-missing</doclint>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <arguments>-P !autoformat,verifyformat,thrift -DskipTests</arguments>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <goals>clean deploy</goals>
            <preparationGoals>clean package</preparationGoals>
            <tagNameFormat>rel/@{project.version}</tagNameFormat>
            <releaseProfiles>apache-release,accumulo-release</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>${unitTestMemSize} ${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>${extraTestArgs}</argLine>
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.5.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.1.1</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.23.0</version>
          <configuration>
            <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>
            </excludes>
          </configuration>
        </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.9.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>
                <!-- auto-service-annotations is transitive via auto-service -->
                <undeclared>com.google.auto.service:auto-service-annotations:jar:*</undeclared>
                <!-- 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>
                <!-- auto-service isn't used in every module -->
                <unused>com.google.auto.service:auto-service: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>
                <!-- ignore log4j dep used for annotations and needed for compile time linting -->
                <unused>biz.aQute.bnd:biz.aQute.bnd.annotation: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>
              </ignoredUnusedDeclaredDependencies>
            </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.module.name</name>
              <regex>-</regex>
              <replacement>.</replacement>
              <value>org-apache-${project.artifactId}</value>
            </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 />
                <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>10.12.6</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>
        <accumulo.skip>true</accumulo.skip>
        <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.12.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>
      <!-- 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>
      <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>
                  -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>
