<?xml version="1.0" encoding="UTF-8"?>
<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>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-build-configuration</artifactId>
    <version>2.4.17</version>
    <relativePath>../hbase-build-configuration</relativePath>
  </parent>
  <artifactId>hbase-assembly</artifactId>
  <packaging>pom</packaging>
  <name>Apache HBase - Assembly</name>
  <description>Module that does project assembly and that is all that it does.</description>
  <properties>
    <license.bundles.dependencies>true</license.bundles.dependencies>
  </properties>
  <dependencies>
    <!-- client artifacts for downstream use -->
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-shaded-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-shaded-client-byo-hadoop</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-shaded-mapreduce</artifactId>
    </dependency>
    <!-- Intra-project dependencies -->
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-it</artifactId>
      <type>test-jar</type>
    </dependency>
    <!-- Hamcrest is required by hbase-it (via junit), but as long as we're grabbing the hbase-it test-jar,
         maven dependency resolution won't pick it up for us. -->
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <!-- Overriding the scope in depMgmt -->
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-mapreduce</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-mapreduce</artifactId>
      <type>test-jar</type>
    </dependency>
    <!-- To dump tools in hbase-procedure into cached_classpath.txt. -->
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-procedure</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-procedure</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hadoop-compat</artifactId>
      <exclusions>
        <exclusion>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>${compat.module}</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-shell</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-thrift</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-rest</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-external-blockcache</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-testing-util</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-metrics-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-metrics</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-protocol</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-protocol-shaded</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-resource-bundle</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-replication</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-http</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-examples</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-zookeeper</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-hbtop</artifactId>
    </dependency>
    <dependency>
      <groupId>jline</groupId>
      <artifactId>jline</artifactId>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>jaxws-ri</artifactId>
      <type>pom</type>
    </dependency>
    <!--
      Include the log framework here.
      For other sub modules, we only declare slf4j-api as a compile dependency,
      so here we must pull in the real logging framework to actually log to log4j.
    -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-reload4j</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.reload4j</groupId>
      <artifactId>reload4j</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <!-- licensing info from our dependencies -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>aggregate-licenses</id>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <properties>
                <copyright-end-year>${build.year}</copyright-end-year>
                <debug-print-included-work-info>${license.debug.print.included}</debug-print-included-work-info>
                <bundled-dependencies>${license.bundles.dependencies}</bundled-dependencies>
                <bundled-jquery>${license.bundles.jquery}</bundled-jquery>
                <bundled-logo>${license.bundles.logo}</bundled-logo>
                <bundled-bootstrap>${license.bundles.bootstrap}</bundled-bootstrap>
              </properties>
              <resourceBundles>
                <resourceBundle>${project.groupId}:hbase-resource-bundle:${project.version}</resourceBundle>
              </resourceBundles>
              <supplementalModelArtifacts>
                <supplementalModelArtifact>${project.groupId}:hbase-resource-bundle:${project.version}</supplementalModelArtifact>
              </supplementalModelArtifacts>
              <supplementalModels>
                <supplementalModel>supplemental-models.xml</supplementalModel>
              </supplementalModels>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <!--Else will use hbase-assembly as final name.-->
          <finalName>hbase-${project.version}</finalName>
          <skipAssembly>false</skipAssembly>
          <appendAssemblyId>true</appendAssemblyId>
          <tarLongFileMode>posix</tarLongFileMode>
          <descriptors>
            <descriptor>${assembly.file}</descriptor>
            <descriptor>src/main/assembly/client.xml</descriptor>
          </descriptors>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <!-- generates the file that will be used by the bin/hbase script in the dev env -->
            <id>create-hbase-generated-classpath</id>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <outputFile>${project.parent.basedir}/target/cached_classpath.txt</outputFile>
              <excludeArtifactIds>jline,jruby-complete,hbase-shaded-client,hbase-shaded-client-byo-hadoop,hbase-shaded-mapreduce</excludeArtifactIds>
            </configuration>
          </execution>

          <execution>
            <!-- generates the file that will be used by the bin/hbase zkcli script in the dev env -->
            <id>create-hbase-generated-classpath-jline</id>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <outputFile>${project.parent.basedir}/target/cached_classpath_jline.txt</outputFile>
              <includeArtifactIds>jline</includeArtifactIds>
            </configuration>
          </execution>

          <execution>
            <!-- generates the file that will be used by the bin/hbase shell script in the dev env -->
            <id>create-hbase-generated-classpath-jruby</id>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <outputFile>${project.parent.basedir}/target/cached_classpath_jruby.txt</outputFile>
              <includeArtifactIds>jruby-complete</includeArtifactIds>
            </configuration>
          </execution>

          <!--
           Build an aggregation of our templated NOTICE file and the NOTICE files in our dependencies.
           If MASSEMBLY-382 is fixed we could do this in the assembly
           Currently relies on env, bash, find, and cat.
        -->
          <execution>
            <!-- put all of the NOTICE files out of our dependencies -->
            <id>unpack-dependency-notices</id>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <phase>prepare-package</phase>
            <configuration>
              <excludeTypes>pom</excludeTypes>
              <useSubDirectoryPerArtifact>true</useSubDirectoryPerArtifact>
              <includes>**\/NOTICE,**\/NOTICE.txt</includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>${exec.maven.version}</version>
        <executions>
          <execution>
            <id>concat-NOTICE-files</id>
            <goals>
              <goal>exec</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <executable>env</executable>
              <arguments>
                <argument>bash</argument>
                <argument>-c</argument>
                <argument>cat maven-shared-archive-resources/META-INF/NOTICE \
                  `find ${project.build.directory}/dependency -iname NOTICE -or -iname NOTICE.txt`</argument>
              </arguments>
              <outputFile>${project.build.directory}/NOTICE.aggregate</outputFile>
              <workingDirectory>${project.build.directory}</workingDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- /end building aggregation of NOTICE files -->
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>rsgroup</id>
      <activation>
        <property>
          <name>!skip-rsgroup</name>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase-rsgroup</artifactId>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </dependency>
        <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-core</artifactId>
          <!-- Making it compile here so that it can be downloaded during packaging. -->
          <!-- All other modules scope it as test or inherit test scope from parent pom.  -->
          <scope>compile</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>
