blob: e0196dbe0c9594c2d31a3492351aeb31ce8a80a5 [file] [log] [blame]
<?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.hbase.filesystem</groupId>
<artifactId>hbase-filesystem</artifactId>
<version>1.0.0-alpha2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>hbase-oss</artifactId>
<name>Apache HBase / Object-Store Semantics Module</name>
<description>
This module provides atomic file-system semantics required by HBase when
running on object-store based FileSystem implementations that can not
natively offer those semantics. It does this by locking, so operations may
not be fast, but should be transactional.
</description>
<packaging>jar</packaging>
<properties>
<fs.hboss.sync.impl>org.apache.hadoop.hbase.oss.sync.ZKTreeLockManager</fs.hboss.sync.impl>
<aws-java-sdk.version>1.11.525</aws-java-sdk.version>
<shading.prefix>org.apache.hadoop.hbase.oss.thirdparty</shading.prefix>
</properties>
<profiles>
<profile>
<id>null</id>
<properties>
<fs.hboss.sync.impl>org.apache.hadoop.hbase.oss.sync.NullTreeLockManager</fs.hboss.sync.impl>
</properties>
</profile>
<profile>
<id>local</id>
<properties>
<fs.hboss.sync.impl>org.apache.hadoop.hbase.oss.sync.LocalTreeLockManager</fs.hboss.sync.impl>
</properties>
</profile>
<profile>
<id>zk</id>
<properties>
<fs.hboss.sync.impl>org.apache.hadoop.hbase.oss.sync.ZKTreeLockManager</fs.hboss.sync.impl>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- TODO add parallel tests for everything but TestHBOSSContractRootDirectory-->
<configuration>
<systemProperties>
<fs.hboss.sync.impl>${fs.hboss.sync.impl}</fs.hboss.sync.impl>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>aggregate-into-a-jar-with-relocated-third-parties</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<!-- XXX If you change the set of dependencies, you should uncomment this so that
you can ensure we don't gain additional transitive dependencies that need to
be relocated. It can't be true when we build or the shade plugin will drop
all of our direct dependencies at provided and test scope. :/
-->
<!--
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
-->
<!-- XXX If you change what gets included, please review the generated
LICENSE/NOTICE files to make sure they're accurate
-->
<artifactSet>
<includes>
<include>org.apache.commons:commons-lang3:jar:*</include>
<include>org.apache.curator:curator-*:jar:*</include>
<include>org.apache.yetus:audience-annotations:jar:*</include>
<include>org.apache.zookeeper:zookeeper:jar:*</include>
<include>org.apache.zookeeper:zookeeper-jute:jar:*</include>
<!-- transitives -->
<include>io.netty:netty</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>${shading.prefix}.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.curator</pattern>
<shadedPattern>${shading.prefix}.org.apache.curator</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.jute</pattern>
<shadedPattern>${shading.prefix}.org.apache.jute</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.yetus</pattern>
<shadedPattern>${shading.prefix}.org.apache.yetus</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.zookeeper</pattern>
<shadedPattern>${shading.prefix}.org.apache.zookeeper</shadedPattern>
</relocation>
<relocation>
<pattern>org.codehaus</pattern>
<shadedPattern>${shading.prefix}.org.codehaus</shadedPattern>
</relocation>
<!-- netty family -->
<relocation>
<pattern>org.jboss.netty</pattern>
<shadedPattern>${shading.prefix}.org.jboss.netty</shadedPattern>
</relocation>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>${shading.prefix}.io.netty</shadedPattern>
</relocation>
</relocations>
<transformers>
<!-- Where notices exist, just concat them -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
<addHeader>false</addHeader>
<projectName>${project.name}</projectName>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- We track needed LICENSE details manually -->
<exclude>LICENSE.txt</exclude>
<exclude>META-INF/LICENSE.txt</exclude>
<exclude>META-INF/license/LICENSE*</exclude>
</excludes>
</filter>
<filter>
<!-- we manually contruct the needed NOTICE details for netty -->
<artifact>io.netty:netty</artifact>
<excludes>
<exclude>META-INF/NOTICE.txt</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- the dependency plugin's dependency:tree output defaults to only showing transitive
dependencies coming off of the first direct dependency to need it, even when the
scope changes because another direct depenendcy has a wider scope. to make the output
easier to read, list provided and test dependencies after compile scope dependencies.
for example, we need netty at compile scope due to our zookeeper dependency. it's also
a transitive dependency of our hadoop dependency that's listed as provided.
(the verbose mode of dependency tree will show transitive dependencies multiple times
when needed by multiple direct dependencies, but it uses a different code path than
normal resolution)
-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.yetus</groupId>
<artifactId>audience-annotations</artifactId>
<version>${audience-annotations.version}</version>
</dependency>
<!-- For ZooKeeper implementation -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
<exclusions>
<exclusion>
<!-- jline is optional and we're not providing a cli -->
<groupId>jline</groupId>
<artifactId>jline</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<!-- Provided dependencies we expect to be around at runtime. i.e. Hadoop and HBase -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<!-- Banned import in HBase -->
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>${hbase.version}</version>
<scope>provided</scope>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
<type>test-jar</type>
<scope>test</scope>
<exclusions>
<exclusion>
<!-- Banned import in HBase -->
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-distcp</artifactId>
<version>${hadoop.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-distcp</artifactId>
<version>${hadoop.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>${hadoop.version}</version>
<type>test-jar</type>
<scope>test</scope>
</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>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
<scope>test</scope>
</dependency>
<!-- For testing against S3 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>${hadoop.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bundle</artifactId>
<version>${aws-java-sdk.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>