META-INF.maven.org.apache.hbase.hbase-protocol-shaded.pom.xml Maven / Gradle / Ivy
<?xml version="1.0"?> <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.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. */ --> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>hbase-build-configuration</artifactId> <groupId>org.apache.hbase</groupId> <version>2.4.9</version> <relativePath>../hbase-build-configuration</relativePath> </parent> <artifactId>hbase-protocol-shaded</artifactId> <name>Apache HBase - Shaded Protocol</name> <description>Shaded protobuf protocol classes used by HBase internally.</description> <properties> <maven.javadoc.skip>true</maven.javadoc.skip> <!--Version of protobuf that hbase uses internally (we shade our pb) Must match what is out in hbase-thirdparty include. --> <internal.protobuf.version>3.17.3</internal.protobuf.version> </properties> <build> <plugins> <!-- Make a jar and put the sources in the jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> <plugin> <!--Make it so assembly:single does nothing in here--> <artifactId>maven-assembly-plugin</artifactId> <configuration> <skipAssembly>true</skipAssembly> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <!-- Always skip the second part executions, since we only run simple unit tests in this module --> <executions> <execution> <id>secondPartTestsExecution</id> <phase>test</phase> <goals> <goal>test</goal> </goals> <configuration> <skip>true</skip> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <executions> <execution> <id>compile-protoc</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <protocArtifact>com.google.protobuf:protoc:${internal.protobuf.version}:exe:${os.detected.classifier}</protocArtifact> <checkStaleness>true</checkStaleness> </configuration> </execution> </executions> </plugin> <!--Need this old plugin to replace in generated files instances of com.google.protobuf so instead its o.a.h.h.com.google.protobuf. Plugin is old and in google code archive. Here is usage done by anohther: https://github.com/beiliubei/maven-replacer-plugin/wiki/Usage-Guide The mess with the regex in the below is to prevent replacement every time we run mvn install. There is probably a better way of avoiding the double interpolation but this is it for now. --> <plugin> <groupId>com.google.code.maven-replacer-plugin</groupId> <artifactId>replacer</artifactId> <version>1.5.3</version> <executions> <execution> <phase>process-sources</phase> <goals> <goal>replace</goal> </goals> </execution> </executions> <configuration> <basedir>${basedir}/target/generated-sources/</basedir> <includes> <include>**/*.java</include> </includes> <!-- Ignore errors when missing files, because it means this build was run with -Dprotoc.skip and there is no -Dreplacer.skip --> <ignoreErrors>true</ignoreErrors> <replacements> <replacement> <token>([^\.])com.google.protobuf</token> <value>$1org.apache.hbase.thirdparty.com.google.protobuf</value> </replacement> <replacement> <token>(public)(\W+static)?(\W+final)?(\W+class)</token> <value>@javax.annotation.Generated("proto") $1$2$3$4</value> </replacement> <!-- replacer doesn't support anchoring or negative lookbehind --> <replacement> <token>(@javax.annotation.Generated\("proto"\) ){2}</token> <value>$1</value> </replacement> </replacements> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <minimizeJar>true</minimizeJar> <shadeSourcesContent>true</shadeSourcesContent> <!-- Causes an NPE until shade 3.0.1. See MSHADE-247 <createSourcesJar>true</createSourcesJar> --> <relocations> <relocation> <pattern>com.google.protobuf</pattern> <shadedPattern>org.apache.hadoop.hbase.shaded.com.google.protobuf</shadedPattern> </relocation> </relocations> <artifactSet> <excludes> <!-- exclude J2EE modules that come in for JDK11+ or modules that come in for JDK8+ but need not be included --> <exclude>javax.annotation:javax.annotation-api</exclude> <!--Exclude protobuf itself. We get a patched version from hbase-thirdparty. --> <exclude>org.apache.hbase.thirdparty:*</exclude> <exclude>com.google.protobuf:protobuf-java</exclude> <exclude>com.google.code.findbugs:*</exclude> <exclude>com.google.j2objc:j2objc-annotations</exclude> <exclude>org.codehaus.mojo:animal-sniffer-annotations</exclude> <exclude>junit:junit</exclude> <exclude>log4j:log4j</exclude> <exclude>commons-logging:commons-logging</exclude> <exclude>org.slf4j:slf4j-api</exclude> <exclude>org.apache.yetus:audience-annotations</exclude> <exclude>com.github.stephenc.fingbugs:*</exclude> <exclude>com.github.spotbugs:*</exclude> </excludes> </artifactSet> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <failOnViolation>true</failOnViolation> </configuration> </plugin> <plugin> <groupId>net.revelc.code</groupId> <artifactId>warbucks-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencies> <!--BE CAREFUL! Any dependency added here needs to be excluded above in the shade plugin else the dependency will get bundled--> <!-- Intra-project dependencies --> <dependency> <groupId>org.apache.hbase.thirdparty</groupId> <artifactId>hbase-shaded-protobuf</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.htrace</groupId> <artifactId>htrace-core4</artifactId> </dependency> </dependencies> <profiles> <!-- Skip the tests in this module --> <profile> <id>skip-protocol-shaded-tests</id> <activation> <property> <name>skip-protocol-shaded-tests</name> </property> </activation> <properties> <surefire.skipFirstPart>true</surefire.skipFirstPart> <surefire.skipSecondPart>true</surefire.skipSecondPart> </properties> </profile> <profile> <id>build-with-jdk11</id> <activation> <jdk>[1.11,)</jdk> </activation> <dependencies> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </dependency> </dependencies> </profile> <profile> <id>eclipse-specific</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> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-maven-plugins</artifactId> <versionRange>[2.0.5-alpha,)</versionRange> <goals> <goal>protoc</goal> </goals> </pluginExecutionFilter> <action> <ignore/> </action> </pluginExecution> <pluginExecution> <pluginExecutionFilter> <groupId> com.google.code.maven-replacer-plugin </groupId> <artifactId>replacer</artifactId> <versionRange>[1.5.3,)</versionRange> <goals> <goal>replace</goal> </goals> </pluginExecutionFilter> <action> <execute> <runOnIncremental>false</runOnIncremental> </execute> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> </profile> </profiles> </project>