This is an automated email from the ASF dual-hosted git repository. elserj pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-ratis-thirdparty.git
commit d965b8da3189093864255c2af3e3fb2ac89e5229 Author: Josh Elser <[email protected]> AuthorDate: Wed Sep 19 16:41:06 2018 -0400 RATIS-316 Create ratis-thirdparty This bundles and relocates all thirdparty (non-Ratis-owned) code that Ratis uses to ensure that Ratis can effectively work in any environment that may provide its own versions of the same dependencies. --- .gitignore | 6 + pom.xml | 526 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 532 insertions(+) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0c3657 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +target +.settings +.project +.classpath +.iml +.idea diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..b432f42 --- /dev/null +++ b/pom.xml @@ -0,0 +1,526 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed 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. See accompanying LICENSE file. +--> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>18</version> + <relativePath /> <!-- resolve from repository --> + </parent> + <artifactId>ratis-thirdparty</artifactId> + <groupId>org.apache.ratis</groupId> + <version>0.1.0-SNAPSHOT</version> + <name>Apache Ratis Thirdparty</name> + <packaging>jar</packaging> + <description>Thirdparty dependencies for Apache Ratis</description> + <url>https://ratis.apache.org/</url> + <inceptionYear>2017</inceptionYear> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> + <scm> + <connection>scm:git:git://git.apache.org/incubator-ratis.git</connection> + <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-ratis.git</developerConnection> + <url>https://git-wip-us.apache.org/repos/asf?p=incubator-ratis.git</url> + <tag>HEAD</tag> + </scm> + <issueManagement> + <system>JIRA</system> + <url>http://issues.apache.org/jira/browse/RATIS</url> + </issueManagement> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <!-- Maven plugin versions --> + <maven-bundle-plugin.version>2.5.3</maven-bundle-plugin.version> + <maven-checkstyle-plugin.version>2.15</maven-checkstyle-plugin.version> + <maven-clean-plugin.version>3.0.0</maven-clean-plugin.version> + <maven-dependency-plugin.version>2.10</maven-dependency-plugin.version> + <maven-deploy-plugin.version>2.8.1</maven-deploy-plugin.version> + <maven-install-plugin.version>2.5.1</maven-install-plugin.version> + <maven-javadoc-plugin.version>2.10.3</maven-javadoc-plugin.version> + <maven-resources-plugin.version>2.6</maven-resources-plugin.version> + <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version> + <maven-site-plugin.version>3.5</maven-site-plugin.version> + <maven-source-plugin.version>2.3</maven-source-plugin.version> + + <!-- + ! Can be removed if changing to ASF parent version 19 + --> + <apache-rat-plugin.version>0.12</apache-rat-plugin.version> + <exec-maven-plugin.version>1.3.1</exec-maven-plugin.version> + <findbugs.version>3.0.0</findbugs.version> + <native-maven-plugin.version>1.0-alpha-8</native-maven-plugin.version> + + <!-- define the Java language version used by the compiler --> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + <java.min.version>${maven.compiler.source}</java.min.version> + <maven.min.version>3.3.9</maven.min.version> + + <!--Version of protobuf to be shaded --> + <shaded.protobuf.version>3.5.0</shaded.protobuf.version> + <shaded.protobuf-javanano.version>3.1.0</shaded.protobuf-javanano.version> + <!--Version of grpc to be shaded --> + <shaded.grpc.version>1.14.0</shaded.grpc.version> + <!--Version of Netty to be shaded --> + <shaded.netty.version>4.1.27.Final</shaded.netty.version> + + <io.opencensus.version>0.12.2</io.opencensus.version> + <ratis.thirdparty.shaded.prefix>org.apache.ratis.thirdparty</ratis.thirdparty.shaded.prefix> + </properties> + + <dependencies> + <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + <version>${shaded.protobuf.version}</version> + </dependency> + <dependency> + <groupId>com.google.protobuf.nano</groupId> + <artifactId>protobuf-javanano</artifactId> + <version>${shaded.protobuf-javanano.version}</version> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-netty</artifactId> + <version>${shaded.grpc.version}</version> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-protobuf</artifactId> + <version>${shaded.grpc.version}</version> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-stub</artifactId> + <version>${shaded.grpc.version}</version> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-context</artifactId> + <version>${shaded.grpc.version}</version> + </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>24.1-jre</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>${shaded.netty.version}</version> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.2</version> + </dependency> + <dependency> + <groupId>io.opencensus</groupId> + <artifactId>opencensus-api</artifactId> + <version>${io.opencensus.version}</version> + </dependency> + <dependency> + <groupId>io.opencensus</groupId> + <artifactId>opencensus-contrib-grpc-metrics</artifactId> + <version>${io.opencensus.version}</version> + </dependency> + </dependencies> + + <build> + <extensions> + <extension> + <groupId>kr.motd.maven</groupId> + <artifactId>os-maven-plugin</artifactId> + <version>1.5.0.Final</version> + </extension> + </extensions> + + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-shade-plugin</artifactId> + <version>${maven-shade-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <version>${maven-install-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${maven-javadoc-plugin.version}</version> + <configuration> + <additionalJOptions> + <additionalJOption>-Xmaxwarns</additionalJOption> + <additionalJOption>10000</additionalJOption> + <additionalJOption>-Xdoclint:-missing</additionalJOption> + </additionalJOptions> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>native-maven-plugin</artifactId> + <version>${native-maven-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>${maven-resources-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>${exec-maven-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>${maven-dependency-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <configuration> + <rules> + <requireMavenVersion> + <version>[${maven.min.version},)</version> + </requireMavenVersion> + <requireJavaVersion> + <version>[${java.min.version},)</version> + </requireJavaVersion> + </rules> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <!--Defer to the ratis-assembly sub-module. It does all assembly--> + <skipAssembly>true</skipAssembly> + </configuration> + </plugin> + <!-- Make a jar and put the sources in the jar. + In the parent pom, so submodules will do the right thing. --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <id>attach-sources</id> + <phase>prepare-package</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </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-deploy-plugin</artifactId> + <version>${maven-deploy-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>${apache-rat-plugin.version}</version> + <!-- target/ should get picked up from Apache parent pom.. --> + <configuration> + <!-- Lets us define more exclusions in child-modules without overriding these --> + <excludes combine.children="append"> + <exclude>target/*</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>${maven-bundle-plugin.version}</version> + </plugin> + </plugins> + </pluginManagement> + + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <inherited>false</inherited> + <executions> + <execution> + <id>clean</id> + <goals> + <goal>enforce</goal> + </goals> + <phase>pre-clean</phase> + </execution> + <execution> + <id>default</id> + <goals> + <goal>enforce</goal> + </goals> + <phase>validate</phase> + <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. + Ratis 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. + </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. + Ratis requires at least version ${java.min.version} of the JDK 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. + </message> + </requireJavaVersion> + </rules> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <inherited>true</inherited> + <extensions>true</extensions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>${maven-checkstyle-plugin.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <shadeSourcesContent>true</shadeSourcesContent> + <createSourcesJar>true</createSourcesJar> + <!-- Replace the original artifact which is no good on its own --> + <shadedArtifactAttached>false</shadedArtifactAttached> + <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> + <relocations> + <relocation> + <pattern>com.google.api</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.api</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.cloud.audit</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.cloud.audit</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.common</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.common</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.logging.type</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.logging.type</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.longrunning</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.longrunning</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.protobuf</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.protobuf</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.rpc</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.rpc</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.thirdparty.publicsuffix</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.thirdparty.publicsuffix</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.type</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.type</shadedPattern> + </relocation> + <relocation> + <pattern>io.grpc</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.io.grpc</shadedPattern> + </relocation> + <relocation> + <pattern>io.netty</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.io.netty</shadedPattern> + </relocation> + <relocation> + <pattern>io.opencensus</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.io.opencensus</shadedPattern> + </relocation> + <relocation> + <pattern>com.google.gson</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.com.google.gson</shadedPattern> + </relocation> + <relocation> + <pattern>afu.plume</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.afu.plume</shadedPattern> + </relocation> + <relocation> + <pattern>afu.org.checkerframework</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.afu.org.checkerframework</shadedPattern> + </relocation> + <relocation> + <pattern>org.checkerframework</pattern> + <shadedPattern>${ratis.thirdparty.shaded.prefix}.org.checkerframework</shadedPattern> + </relocation> + </relocations> + <artifactSet> + <includes> + <!-- Package all listed dependencies --> + <include>*:*</include> + </includes> + <excludes> + <!-- Remove ransitive stuff we don't need coming from google deps --> + <exclude>com.google.code.findbugs:jsr305</exclude> + <exclude>com.google.errorprone:error_prone_annotations</exclude> + <exclude>com.google.j2objc:j2objc-annotations</exclude> + <!-- Specifying netty-all gets all of these --> + <exclude>io.netty:netty-buffer</exclude> + <exclude>io.netty:netty-codec-http2</exclude> + <exclude>io.netty:netty-codec-http</exclude> + <exclude>io.netty:netty-codec-socks</exclude> + <exclude>io.netty:netty-codec</exclude> + <exclude>io.netty:netty-common</exclude> + <exclude>io.netty:netty-handler-proxy</exclude> + <exclude>io.netty:netty-handler</exclude> + <exclude>io.netty:netty-resolver</exclude> + <exclude>io.netty:netty-transport</exclude> + <!-- Transitive stuff we don't need coming from google deps --> + <exclude>org.codehaus.mojo:animal-sniffer-annotations</exclude> + </excludes> + </artifactSet> + <!-- Pick up any LICENSE/NOTICE files from our dependencies --> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" /> + <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"> + <addHeader>false</addHeader> + </transformer> + <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>release</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <!-- builds source jars and attaches them to the project for publishing --> + <id>ratis-java-sources</id> + <phase>package</phase> + <goals> + <goal>jar-no-fork</goal> + <goal>test-jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.codehaus.mojo</groupId> + <artifactId>extra-enforcer-rules</artifactId> + <version>1.0-beta-6</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>dist-enforce</id> + <phase>package</phase> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <enforceBytecodeVersion> + <maxJdkVersion>${java.min.version}</maxJdkVersion> + <message>Ratis has unsupported dependencies. + Ratis requires that all dependencies be compiled with version ${java.min.version} 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 + 'javac.source' property (eg. mvn -Djavac.source=1.8 clean package). + </message> + </enforceBytecodeVersion> + </rules> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <executions> + <execution> + <!-- Execution at the validate lifecycle is good --> + <id>check-licenses</id> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project>
