<?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-alpha1</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>com.google.*:*:jar:*</include>
                  <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>
                  <!-- transitives -->
                  <include>io.netty:netty</include>
                </includes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>com.google</pattern>
                  <shadedPattern>${shading.prefix}.com.google</shadedPattern>
                </relocation>
                <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>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>${guava.version}</version>
      <exclusions>
        <exclusion>
          <!-- Banned import in HBase -->
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
        </exclusion>
        <exclusion>
          <!-- this should have been marked optional by guava because
               the annotation are retention CLASS -->
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>animal-sniffer-annotations</artifactId>
        </exclusion>
      </exclusions>
    </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-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>
      <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>

    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-zookeeper</artifactId>
      <version>${hbase.version}</version>
      <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>

  </dependencies>

</project>
