<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   http://maven.apache.org/maven-v4_0_0.xsd">
  <!--
/**
 * 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
 *
 *     http://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.
 */

  ON MVN COMPILE NOT WORKING

  you can't rely on doing `mvn compile` or `mvn test-compile` direclty
  because in the spark/hbase-spark module we need to refer to the classes
  from hbase-spark-protocol after they've been rewritten in
  hbase-spark-protocol-shaded to use the protobuf version from the
  hbase-thirdparty project.

  instead you should include a "package" phase in any commands you run
  that won't implicitly include a package phase (e.g. install and verify
  will implicitly include package)

-->
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>23</version>
    <relativePath/>
    <!-- no parent resolution -->
  </parent>
  <groupId>org.apache.hbase.connectors</groupId>
  <artifactId>hbase-connectors</artifactId>
  <!-- See https://maven.apache.org/maven-ci-friendly.html -->
  <version>${revision}</version>
  <packaging>pom</packaging>
  <name>Apache HBase Connectors</name>
  <description>Connectors to Apache HBase.</description>
  <url>http://hbase.apache.org</url>
  <inceptionYear>2018</inceptionYear>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers/>
  <!--Currently mail sent by this gitbox project goes to issues@hbase.
       git comments are reflected in referenced JIRA issue.
       https://issues.apache.org/jira/browse/INFRA-16887
    -->
  <mailingLists>
    <mailingList>
      <name>User List</name>
      <subscribe>user-subscribe@hbase.apache.org</subscribe>
      <unsubscribe>user-unsubscribe@hbase.apache.org</unsubscribe>
      <post>user@hbase.apache.org</post>
      <archive>https://lists.apache.org/list.html?user@hbase.apache.org</archive>
      <otherArchives>
        <otherArchive>http://dir.gmane.org/gmane.comp.java.hadoop.hbase.user</otherArchive>
        <otherArchive>http://search-hadoop.com/?q=&amp;fc_project=HBase</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Developer List</name>
      <subscribe>dev-subscribe@hbase.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@hbase.apache.org</unsubscribe>
      <post>dev@hbase.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@hbase.apache.org</archive>
      <otherArchives>
        <otherArchive>http://dir.gmane.org/gmane.comp.java.hadoop.hbase.devel</otherArchive>
        <otherArchive>http://search-hadoop.com/?q=&amp;fc_project=HBase</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Commits List</name>
      <subscribe>commits-subscribe@hbase.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@hbase.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?commits@hbase.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Issues List</name>
      <subscribe>issues-subscribe@hbase.apache.org</subscribe>
      <unsubscribe>issues-unsubscribe@hbase.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?issues@hbase.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>Builds List</name>
      <subscribe>builds-subscribe@hbase.apache.org</subscribe>
      <unsubscribe>builds-unsubscribe@hbase.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?builds@hbase.apache.org</archive>
    </mailingList>
  </mailingLists>
  <modules>
    <module>kafka</module>
    <module>spark</module>
    <module>hbase-connectors-assembly</module>
  </modules>
  <scm>
    <connection>scm:git:git://gitbox.apache.org/repos/asf/hbase-connectors.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/hbase-connectors.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=hbase-connectors.git;a=summary</url>
  </scm>
  <issueManagement>
    <!--File issues for this project against Apache HBase JIRA-->
    <system>JIRA</system>
    <url>http://issues.apache.org/jira/browse/HBASE</url>
  </issueManagement>
  <properties>
    <!-- See https://maven.apache.org/maven-ci-friendly.html -->
    <revision>1.1.0-SNAPSHOT</revision>
    <maven.javadoc.skip>true</maven.javadoc.skip>
    <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm</maven.build.timestamp.format>
    <buildDate>${maven.build.timestamp}</buildDate>
    <compileSource>1.8</compileSource>
    <java.min.version>${compileSource}</java.min.version>
    <!-- override on command line to have generated LICENSE files include
         diagnostic info for verifying notice requirements -->
    <license.debug.print.included>false</license.debug.print.included>
    <license.bundles.dependencies>false</license.bundles.dependencies>
    <license.bundles.logo>false</license.bundles.logo>
    <license.bundles.bootstrap>false</license.bundles.bootstrap>
    <license.bundles.jquery>false</license.bundles.jquery>
    <buildnumber.maven.version>1.4</buildnumber.maven.version>

    <maven.min.version>3.5.0</maven.min.version>
    <hbase.version>2.5.4</hbase.version>
    <exec.maven.version>1.6.0</exec.maven.version>
    <audience-annotations.version>0.5.0</audience-annotations.version>
    <junit.version>4.13.2</junit.version>
    <mockito-all.version>1.8.5</mockito-all.version>
    <hbase-thirdparty.version>4.1.4</hbase-thirdparty.version>
    <hadoop-two.version>2.10.0</hadoop-two.version>
    <hadoop-three.version>3.2.4</hadoop-three.version>
    <hadoop.version>${hadoop-three.version}</hadoop.version>
    <slf4j.version>1.7.36</slf4j.version>
    <log4j2.version>2.17.2</log4j2.version>
    <reload4j.version>1.2.25</reload4j.version>
    <checkstyle.version>8.45.1</checkstyle.version>
    <spotless.version>2.27.2</spotless.version>
    <maven.checkstyle.version>3.2.1</maven.checkstyle.version>
    <hbase.checkstyle.version>2.5.0</hbase.checkstyle.version>
    <surefire.version>3.0.0</surefire.version>
    <enforcer.version>3.0.0</enforcer.version>
    <extra.enforcer.version>1.5.1</extra.enforcer.version>
    <restrict-imports.enforcer.version>0.14.0</restrict-imports.enforcer.version>
    <!--Internally we use a different version of protobuf. See hbase-protocol-shaded-->
    <external.protobuf.version>2.5.0</external.protobuf.version>
    <protobuf.plugin.version>0.5.0</protobuf.plugin.version>
    <commons-io.version>2.11.0</commons-io.version>
    <avro.version>1.7.7</avro.version>
    <commons-lang3.version>3.12.0</commons-lang3.version>
    <!--This property is for hadoops netty. HBase netty
         comes in via hbase-thirdparty hbase-shaded-netty-->
    <netty.hadoop.version>3.10.6.Final</netty.hadoop.version>
    <os.maven.version>1.6.1</os.maven.version>
    <glassfish.el.version>3.0.1-b08</glassfish.el.version>
    <compat.module>hbase-hadoop2-compat</compat.module>
    <dependency.locations.enabled>false</dependency.locations.enabled>
    <sonar-maven-plugin.version>3.9.1.2184</sonar-maven-plugin.version>
    <scoverage.version>1.4.11</scoverage.version>
    <sbt-compiler.version>1.0.0</sbt-compiler.version>
    <jacoco.version>0.8.8</jacoco.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${external.protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <!-- Avro dependencies we mostly get transitively, manual version coallescing -->
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>${avro.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.thoughtworks.paranamer</groupId>
            <artifactId>paranamer</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.reload4j</groupId>
        <artifactId>reload4j</artifactId>
        <version>${reload4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>${glassfish.el.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.yetus</groupId>
        <artifactId>audience-annotations</artifactId>
        <version>${audience-annotations.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-annotations</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <!--Was test scope only but if we want to run hbase-it tests, need the annotations test jar-->
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito-all.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase.thirdparty</groupId>
        <artifactId>hbase-shaded-miscellaneous</artifactId>
        <version>${hbase-thirdparty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-protocol</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-hadoop2-compat</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-hadoop2-compat</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-hadoop-compat</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-hadoop-compat</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-zookeeper</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-shaded-client</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-mapreduce</artifactId>
        <version>${hbase.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-it</artifactId>
        <version>${hbase.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-shaded-testing-util</artifactId>
        <version>${hbase.version}</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <!--Defer to the hbase-connector-assembly sub-module.  It
             does all assembly-->
            <skipAssembly>true</skipAssembly>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <!--You need this profile. It'll sign your artifacts.
              I'm not sure if this config. actually works though.
              I've been specifying -Papache-release on the command-line
           -->
            <releaseProfiles>apache-release</releaseProfiles>
            <!--This stops our running tests for each stage of maven release.
              But it builds the test jar.  From SUREFIRE-172.
            -->
            <arguments>-Dmaven.test.skip.exec ${arguments}</arguments>
            <goals>${goals}</goals>
            <pomFileName>pom.xml</pomFileName>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>${compileSource}</source>
            <target>${compileSource}</target>
            <showWarnings>true</showWarnings>
            <showDeprecation>false</showDeprecation>
            <useIncrementalCompilation>false</useIncrementalCompilation>
            <compilerArgument>-Xlint:-options</compilerArgument>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>target/*</exclude>
              <exclude>**/.idea/**</exclude>
              <exclude>**/*.iml</exclude>
              <!--  exclude source control files -->
              <exclude>.git/**</exclude>
              <exclude>**/.settings/**</exclude>
              <exclude>**/patchprocess/**</exclude>
              <exclude>**/.flattened-pom.xml</exclude>
              <exclude>**/src/main/resources/META-INF/LEGAL</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>${buildnumber.maven.version}</version>
          <configuration>
            <timestampFormat>yyyy</timestampFormat>
            <timestampPropertyName>build.year</timestampPropertyName>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>create-timestamp</goal>
              </goals>
              <phase>validate</phase>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <!-- Approach followed here is roughly the same as mentioned here:
          https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/multi-module-config.html
          -->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>${maven.checkstyle.version}</version>
          <configuration>
            <configLocation>hbase/checkstyle.xml</configLocation>
            <suppressionsLocation>hbase/checkstyle-suppressions.xml</suppressionsLocation>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
            <failOnViolation>false</failOnViolation>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.apache.hbase</groupId>
              <artifactId>hbase-checkstyle</artifactId>
              <version>${hbase.checkstyle.version}</version>
            </dependency>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>${checkstyle.version}</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>checkstyle</id>
              <goals>
                <goal>check</goal>
              </goals>
              <phase>validate</phase>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>${enforcer.version}</version>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>${extra.enforcer.version}</version>
          </dependency>
          <dependency>
            <groupId>de.skuzzle.enforcer</groupId>
            <artifactId>restrict-imports-enforcer-rule</artifactId>
            <version>${restrict-imports.enforcer.version}</version>
          </dependency>
        </dependencies>
        <!-- version set by parent -->
        <executions>
          <execution>
            <id>min-maven-min-java-banned-xerces</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <!-- The earliest maven version we verify builds for via ASF Jenkins -->
                <requireMavenVersion>
                  <version>[${maven.min.version},)</version>
                  <message>Maven is out of date.
  HBase requires at least version ${maven.min.version} of Maven to properly build from source.
  You appear to be using an older version. You can use either "mvn -version" or
  "mvn enforcer:display-info" to verify what version is active.
  See the reference guide on building for more information: http://hbase.apache.org/book.html#build</message>
                </requireMavenVersion>
                <!-- The earliest JVM version we verify builds for via ASF Jenkins -->
                <requireJavaVersion>
                  <version>[${java.min.version},)</version>
                  <message>Java is out of date.
  HBase requires at least version ${java.min.version} of the JDK to properly build from source.
  See the reference guide on building for more information: http://hbase.apache.org/book.html#build</message>
                </requireJavaVersion>
                <bannedDependencies>
                  <excludes>
                    <exclude>xerces:xercesImpl</exclude>
                  </excludes>
                  <message>We avoid adding our own Xerces jars to the classpath, see HBASE-16340.</message>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>banned-scala</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.scala-lang:scala-library</exclude>
                  </excludes>
                  <message>We don't allow Scala outside of the hbase-spark module, see HBASE-13992.</message>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>banned-hbase-spark</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>org.apache.hbase:hbase-spark</exclude>
                  </excludes>
                  <message>We don't allow other modules to depend on hbase-spark, see HBASE-13992.</message>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>banned-illegal-imports</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <phase>process-sources</phase>
            <configuration>
              <rules>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Use SLF4j for logging</reason>
                  <bannedImports>
                    <bannedImport>org.apache.commons.logging.Log</bannedImport>
                    <bannedImport>org.apache.commons.logging.LogFactory</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Use shaded version in hbase-thirdparty</reason>
                  <bannedImports>
                    <bannedImport>com.google.common.**</bannedImport>
                    <bannedImport>io.netty.**</bannedImport>
                    <bannedImport>org.apache.commons.cli.**</bannedImport>
                    <bannedImport>org.apache.commons.collections.**</bannedImport>
                    <bannedImport>org.apache.commons.collections4.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Do not use shaded classes from other dependencies</reason>
                  <bannedImports>
                    <bannedImport>org.apache.curator.shaded.**</bannedImport>
                    <bannedImport>org.apache.htrace.shaded.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Use shaded gson in hbase-thirdparty</reason>
                  <bannedImports>
                    <bannedImport>org.codehaus.jackson.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Use commons lang 3</reason>
                  <bannedImports>
                    <bannedImport>org.apache.commons.lang.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Use yetus IA and IS annotations</reason>
                  <bannedImports>
                    <bannedImport>org.apache.hadoop.classificatio.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>Do not use htrace v3</reason>
                  <bannedImports>
                    <bannedImport>org.htrace.**</bannedImport>
                  </bannedImports>
                </restrictImports>
                <restrictImports implementation="de.skuzzle.enforcer.restrictimports.rule.RestrictImports">
                  <includeTestCode>true</includeTestCode>
                  <commentLineBufferSize>512</commentLineBufferSize>
                  <reason>You should never use this style of annotations(i.e, 'this is for test only')
                    in IA.Public or IA.LimitedPrivate classes. Use IA.Private to tell users this is
                    not for public use.
                    For IA.Private classes, use RestrictedApi annotation in error prone instead.</reason>
                  <bannedImports>
                    <bannedImport>org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting</bannedImport>
                  </bannedImports>
                </restrictImports>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- See https://maven.apache.org/maven-ci-friendly.html-->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>flatten-maven-plugin</artifactId>
        <version>1.1.0</version>
        <configuration>
          <updatePomFile>true</updatePomFile>
          <flattenMode>resolveCiFriendliesOnly</flattenMode>
        </configuration>
        <executions>
          <execution>
            <id>flatten</id>
            <goals>
              <goal>flatten</goal>
            </goals>
            <phase>process-resources</phase>
          </execution>
          <execution>
            <id>flatten.clean</id>
            <goals>
              <goal>clean</goal>
            </goals>
            <phase>clean</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <version>${spotless.version}</version>
        <configuration>
          <!-- define a language-specific format -->
          <java>
            <excludes>
              <exclude>**/generated/*</exclude>
              <exclude>**/package-info.java</exclude>
            </excludes>
            <!--
              e.g., remove the following lines:
              "* @param paramName"
              "* @throws ExceptionType"
              "* @return returnType"'
              Multiline to allow anchors on newlines
              See https://errorprone.info/bugpattern/EmptyBlockTag
            -->
            <replaceRegex>
              <name>Remove unhelpful javadoc stubs</name>
              <searchRegex>(?m)^ *\* *@(?:param|throws|return) *\w* *\n</searchRegex>
              <replacement/>
            </replaceRegex>
            <!--
              e.g., rewrite
              /** @return blabla */
              or
              /**
               * @return blabla
               */
              to
              /** Returns blabla */
              See https://errorprone.info/bugpattern/MissingSummary
              https://google.github.io/styleguide/javaguide.html#s7.2-summary-fragment
            -->
            <replaceRegex>
              <name>Purge single returns tag multi line</name>
              <searchRegex>(?m)^ */\*\*\n *\* *@return *(.*) *\n *\*/$</searchRegex>
              <replacement>/** Returns $1 */</replacement>
            </replaceRegex>
            <replaceRegex>
              <name>Purge single returns tag single line</name>
              <searchRegex>^ */\*\* *@return *(.*) *\*/$</searchRegex>
              <replacement>/** Returns $1 */</replacement>
            </replaceRegex>
            <!-- apply a specific flavor -->
            <eclipse>
              <file>${session.executionRootDirectory}/dev-support/hbase_eclipse_formatter.xml</file>
            </eclipse>
            <importOrder>
              <file>${session.executionRootDirectory}/dev-support/eclipse.importorder</file>
            </importOrder>
            <trimTrailingWhitespace/>
            <endWithNewline/>
            <removeUnusedImports/>
          </java>
          <scala>
            <!-- These are the defaults, you can override if you want -->
            <includes>
              <include>src/main/scala/**/*.scala</include>
              <include>src/test/scala/**/*.scala</include>
              <include>src/main/scala/**/*.sc</include>
              <include>src/test/scala/**/*.sc</include>
            </includes>

            <scalafmt>
              <version>3.7.12</version>
              <file>${session.executionRootDirectory}/dev-support/.scalafmt.conf</file>
            </scalafmt>
          </scala>
          <pom>
            <sortPom>
              <expandEmptyElements>false</expandEmptyElements>
            </sortPom>
          </pom>
          <formats>
            <!-- you can define as many formats as you want, each is independent -->
            <format>
              <!-- define the files to apply to -->
              <includes>
                <include>**/*.xml</include>
                <include>**/*.sh</include>
                <include>**/*.py</include>
                <include>**/Jenkinsfile*</include>
                <include>**/*.md</include>
                <include>*.md</include>
                <include>**/*.txt</include>
                <include>*.txt</include>
              </includes>
              <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/dependency-reduced-pom.xml</exclude>
              </excludes>
              <!-- define the steps to apply to those files -->
              <trimTrailingWhitespace/>
              <endWithNewline/>
            </format>
            <format>
              <!--
                We have some files which have special license header which must be kept, so
                here we add a special format section to apply license header, and leave the
                java/scala section above only used for formatting code style
              -->
              <includes>
                <include>src/main/java/**/*.java</include>
                <include>src/test/java/**/*.java</include>
                <include>src/main/scala/**/*.scala</include>
                <include>src/test/scala/**/*.scala</include>
                <include>src/main/scala/**/*.sc</include>
                <include>src/test/scala/**/*.sc</include>
              </includes>
              <excludes>
                <exclude>**/generated/*</exclude>
                <exclude>**/package-info.java</exclude>
              </excludes>
              <licenseHeader>
                <file>${session.executionRootDirectory}/dev-support/license-header</file>
                <delimiter>package</delimiter>
              </licenseHeader>
            </format>
          </formats>
        </configuration>
      </plugin>
    </plugins>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>${os.maven.version}</version>
      </extension>
    </extensions>
  </build>
  <profiles>
    <!-- this profile should be activated for release builds -->
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>check</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <configuration>
              <rules>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${compileSource}</maxJdkVersion>
                  <message>HBase has unsupported dependencies.
  HBase requires that all dependencies be compiled with version ${compileSource} or earlier
  of the JDK to properly build from source.  You appear to be using a newer dependency. You can use
  either "mvn -version" or "mvn enforcer:display-info" to verify what version is active.
  Non-release builds can temporarily build with a newer JDK version by setting the
  'compileSource' property (eg. mvn -DcompileSource=1.8 clean package).</message>
                </enforceBytecodeVersion>
              </rules>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- this profile should match the name of the release profile in the root asf pom -->
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <!-- This should insert itself in place of the normal deploy plugin and then
               handle either closing or dropping the staging repository for us depending
               on if the build succeeds.
            -->
          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.8</version>
            <extensions>true</extensions>
            <configuration>
              <nexusUrl>https://repository.apache.org/</nexusUrl>
              <serverId>apache.releases.https</serverId>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- this profile runs unit test code coverage analysis -->
    <profile>
      <id>coverage</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <modules>
        <module>test-reporting</module>
      </modules>
      <properties>
        <sonar.projectBaseDir>.</sonar.projectBaseDir>
        <sonar.exclusions>test-reporting/**/*</sonar.exclusions>
        <sonar.coverage.exclusions>**/example/**/*,**/DumpToStringListener*,**/KafkaProxy*</sonar.coverage.exclusions>
        <sonar.java.binaries>**/target/classes</sonar.java.binaries>
        <sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
        <sonar.coverage.jacoco.xmlReportPaths>${sonar.projectBaseDir}/test-reporting/target/code-coverage/jacoco-reports/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
        <sonar.scala.coverage.reportPaths>${sonar.projectBaseDir}/test-reporting/target/code-coverage/scoverage-reports/scoverage.xml</sonar.scala.coverage.reportPaths>
        <argLine/>
        <main.basedir>${project.basedir}</main.basedir>
        <codeCoverageReportRootDir>${main.basedir}/test-reporting/target/code-coverage</codeCoverageReportRootDir>
        <jacocoDestFile>${codeCoverageReportRootDir}/jacoco.exec</jacocoDestFile>
        <jacocoReportDir>${codeCoverageReportRootDir}/jacoco-reports</jacocoReportDir>
        <scoverageReportDir>${codeCoverageReportRootDir}/scoverage-reports</scoverageReportDir>
      </properties>
      <build>

        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.scoverage</groupId>
              <artifactId>scoverage-maven-plugin</artifactId>
              <version>${scoverage.version}</version>
              <configuration>
                <excludedPackages>src/test/java</excludedPackages>
                <excludedFiles>IntegrationTest*</excludedFiles>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.jacoco</groupId>
              <artifactId>jacoco-maven-plugin</artifactId>
              <version>${jacoco.version}</version>
              <configuration>
                <excludes>**/example/**/*</excludes>
              </configuration>
              <executions>
                <execution>
                  <id>prepare-agent</id>
                  <goals>
                    <goal>prepare-agent</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>${sonar-maven-plugin.version}</version>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
