blob: bdd41e9fdae75ad6ebb42b1dac7e7134564c1a4a [file] [log] [blame]
<?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>