| <?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 |
| |
| If you wondering why 'mvn compile' does not work building HBase |
| (in particular, if you are doing it for the first time), instead do |
| 'mvn package'. If you are interested in the full story, see |
| https://issues.apache.org/jira/browse/HBASE-6795. |
| |
| --> |
| <modelVersion>4.0.0</modelVersion> |
| <parent> |
| <groupId>org.apache.hbase.thirdparty</groupId> |
| <artifactId>hbase-thirdparty</artifactId> |
| <version>3.4.0</version> |
| <relativePath>..</relativePath> |
| </parent> |
| <artifactId>hbase-shaded-netty</artifactId> |
| <name>Apache HBase Relocated (Shaded) Netty Libs</name> |
| <description> |
| Pulls down netty.io, relocates nd then makes a fat new jar with them all in it. |
| </description> |
| <build> |
| <plugins> |
| <plugin> |
| <artifactId>maven-clean-plugin</artifactId> |
| <configuration> |
| <filesets> |
| <fileset> |
| <directory>${basedir}</directory> |
| <includes> |
| <include>dependency-reduced-pom.xml</include> |
| </includes> |
| </fileset> |
| </filesets> |
| </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> |
| <shadeSourcesContent>true</shadeSourcesContent> |
| <createSourcesJar>true</createSourcesJar> |
| <relocations> |
| <relocation> |
| <pattern>io.netty</pattern> |
| <shadedPattern>${rename.offset}.io.netty</shadedPattern> |
| </relocation> |
| </relocations> |
| <artifactSet> |
| <excludes> |
| <!--Exclude protobuf itself. We get a patched version in adjacent module. |
| Exclude other dependencies of guava, netty, etc. |
| --> |
| <exclude>com.google.protobuf:protobuf-java</exclude> |
| <exclude>com.google.code.findbugs:jsr305</exclude> |
| <exclude>com.google.errorprone:error_prone_annotations</exclude> |
| <exclude>com.google.j2objc:j2objc-annotations</exclude> |
| <exclude>org.codehaus.mojo:animal-sniffer-annotations</exclude> |
| <exclude>org.codehaus.mojo:animal-sniffer-annotations</exclude> |
| </excludes> |
| </artifactSet> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <!--This trick from |
| https://stackoverflow.com/questions/33825743/rename-files-inside-a-jar-using-some-maven-plugin |
| |
| The netty jar has a .so in it. Shading requires rename of the .so and then passing a system |
| property so netty finds the renamed .so and associates it w/ the relocated netty files. |
| |
| Add this define when running unit tests: |
| |
| mvn test -Dorg.apache.hbase.thirdparty.io.netty.packagePrefix=org.apache.hbase.thirdparty. -Dtest=TestNettyIPC |
| |
| See toward the end of this issue for how to pass config: |
| |
| https://github.com/netty/netty/issues/6665 |
| |
| TODO: Ensure native works. |
| NOTE: The 'tofile' in the move command below has the relocation hard-coded |
| with '-' instead of '.' separators. If change the relocation, need to change here too. |
| --> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-antrun-plugin</artifactId> |
| <version>3.0.0</version> |
| <executions> |
| <execution> |
| <id>unpack</id> |
| <phase>package</phase> |
| <configuration> |
| <target> |
| <echo message="unjar" /> |
| <unzip src="${project.build.directory}/${project.artifactId}-${project.version}.jar" dest="${project.build.directory}/unpacked/" /> |
| <echo message="Rename netty .so in META-INF" /> |
| <move file="${project.build.directory}/unpacked/META-INF/native/libnetty_transport_native_epoll_x86_64.so" tofile="${project.build.directory}/unpacked/META-INF/native/liborg_apache_hbase_thirdparty_netty_transport_native_epoll_x86_64.so" /> |
| <echo message="Redo jar" /> |
| <jar destfile="${project.build.directory}/${project.artifactId}-${project.version}.jar" basedir="${project.build.directory}/unpacked" /> |
| </target> |
| </configuration> |
| <goals> |
| <goal>run</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| </plugins> |
| </build> |
| <dependencies> |
| <dependency> |
| <groupId>io.netty</groupId> |
| <artifactId>netty-all</artifactId> |
| <version>${netty.version}</version> |
| </dependency> |
| </dependencies> |
| </project> |