<?xml version="1.0"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.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.
 */
-->

  <!--This 'all' id is not appended to the produced bundle because we do this: http://maven.apache.org/plugins/maven-assembly-plugin/faq.html#required-classifiers -->
  <id>client-bin</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <!-- Override the root directory in the tarball -->
  <baseDirectory>hbase-${project.version}-client</baseDirectory>
  <componentDescriptors>
    <componentDescriptor>src/main/assembly/client-components.xml</componentDescriptor>
  </componentDescriptors>
  <moduleSets>
    <!-- include regular jars so the shell can use them -->
    <moduleSet>
      <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>org.apache.hbase:hbase-shell</include>
      </includes>
      <binaries>
        <unpack>false</unpack>
        <outputDirectory>lib</outputDirectory>
        <dependencySets>
          <dependencySet>
            <excludes>
            <!-- Exclude J2EE libraries that get pulled in when building on JDK11 -->
              <exclude>com.sun.xml.ws:jaxws-ri</exclude>
            <!-- Exclude libraries that we put in their own dirs under lib/ -->
              <exclude>org.jruby:jruby-complete</exclude>
              <exclude>com.sun.jersey:*</exclude>
              <exclude>com.sun.jersey.contribs:*</exclude>
              <exclude>jline:jline</exclude>
              <exclude>junit:junit</exclude>
              <exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
              <exclude>commons-logging:commons-logging</exclude>
              <exclude>log4j:log4j</exclude>
              <exclude>org.apache.hbase:hbase-shaded-client</exclude>
              <exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
              <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
              <exclude>org.apache.htrace:htrace-core4</exclude>
              <exclude>org.apache.htrace:htrace-core</exclude>
              <exclude>org.apache.yetus:audience-annotations</exclude>
              <exclude>org.slf4j:*</exclude>
              <exclude>org.apache.logging.log4j:*</exclude>
              <exclude>io.opentelemetry.javaagent:*</exclude>
              <exclude>org.hamcrest:hamcrest-core</exclude>
              <exclude>org.mockito:mockito-core</exclude>
            </excludes>
          </dependencySet>
        </dependencySets>
      </binaries>
    </moduleSet>
  </moduleSets>
  <!-- Include the generated LICENSE and NOTICE files -->
  <files>
    <file>
      <source>${project.build.directory}/maven-shared-archive-resources/META-INF/LICENSE</source>
      <outputDirectory>.</outputDirectory>
      <destName>LICENSE.txt</destName>
      <lineEnding>unix</lineEnding>
    </file>
    <file>
      <source>${project.build.directory}/NOTICE.aggregate</source>
      <outputDirectory>.</outputDirectory>
      <destName>NOTICE.txt</destName>
      <lineEnding>unix</lineEnding>
    </file>
    <file>
      <source>${basedir}/src/main/resources/META-INF/LEGAL</source>
      <outputDirectory>.</outputDirectory>
      <destName>LEGAL</destName>
      <lineEnding>unix</lineEnding>
    </file>
  </files>

  <dependencySets>
    <dependencySet>
      <outputDirectory>lib/shaded-clients</outputDirectory>
      <includes>
        <include>org.apache.hbase:hbase-shaded-client</include>
        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
      </includes>
    </dependencySet>
  <!-- Add jruby-complete to hbase_home/lib/ruby.
       Update JRUBY_PACKAGED_WITH_HBASE in bin/hbase and hbase.cmd if you would like to update outputDirectory below -->
    <dependencySet>
      <outputDirectory>lib/ruby</outputDirectory>
      <includes>
        <include>org.jruby:jruby-complete</include>
      </includes>
    </dependencySet>
    <!-- Include third party dependencies the shaded clients expose in the lib directory
         N.B. this will conflict with the omnibus tarball but these should be precisely
         the same artifacts so blind overwrite of either should be fine.
      -->
    <dependencySet>
      <outputDirectory>lib/client-facing-thirdparty</outputDirectory>
      <useTransitiveDependencies>true</useTransitiveDependencies>
      <!-- Unfortunately, we have to whitelist these because Maven
           currently doesn't use the dependency-reduced-pom after
           the shaded module has done its thing. That means if we
           did this as "transitives of the shaded modules" we'd
           get a duplication of all the jars we already have in our
           shaded artifacts. See MNG-5899.

           Check that things match by listing files and making
           sure the runtime scoped things are all present in the
           tarball. e.g.:

           for module in hbase-shaded-mapreduce hbase-shaded-client; do
             mvn dependency:list -f hbase-shaded/${module}/dependency-reduced-pom.xml
           done | \
           grep -E "runtime|compile" | \
           grep -v -E "junit|(optional)" | \
           cut -d ' ' -f 3- | \
           sort -u

           TODO we should check this in nightly

           Alternatively, we could
           stop waiting for Maven to fix this and build the client
           tarball in a different build.
        -->
      <includes>
        <include>com.github.stephenc.findbugs:findbugs-annotations</include>
        <include>commons-logging:commons-logging</include>
        <include>log4j:log4j</include>
        <include>org.apache.htrace:htrace-core4</include>
        <include>org.apache.htrace:htrace-core</include>
        <include>org.apache.yetus:audience-annotations</include>
        <include>org.slf4j:*</include>
        <include>org.apache.logging.log4j:*</include>
        <include>io.opentelemetry:*</include>
      </includes>
    </dependencySet>
    <dependencySet>
      <outputDirectory>lib/trace</outputDirectory>
      <includes>
        <include>io.opentelemetry.javaagent:*</include>
      </includes>
    </dependencySet>
    <!-- Adds junit libs to lib/test -->
    <dependencySet>
      <outputDirectory>lib/test</outputDirectory>
      <includes>
        <include>junit:junit</include>
        <include>org.hamcrest:hamcrest-core</include>
        <include>org.mockito:mockito-core</include>
      </includes>
    </dependencySet>
  </dependencySets>

</assembly>
