<?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.
 */
-->

  <!--Copies over all you need to build hbase-->
  <id>src</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <moduleSets>
    <moduleSet>
      <!-- Enable access to all projects in the current multimodule build. Eclipse
        says this is an error, but builds from the command line just fine. -->
      <useAllReactorProjects>true</useAllReactorProjects>
      <!-- Include all the sources in the top directory -->
      <sources>
        <fileSets>
          <fileSet>
            <excludes>
              <exclude>target/</exclude>
              <exclude>test/</exclude>
              <exclude>.classpath</exclude>
              <exclude>**/*.orig</exclude>
              <exclude>.project</exclude>
              <exclude>.git</exclude>
              <exclude>.gitignore</exclude>
              <exclude>.settings/</exclude>
              <exclude>**/src/go/bin/**</exclude>
              <exclude>**/pkg/**</exclude>
              <exclude>**/build/**</exclude>
            </excludes>
          </fileSet>
        </fileSets>
      </sources>
    </moduleSet>
  </moduleSets>
  <fileSets>
    <fileSet>
      <directory>${project.basedir}/src</directory>
      <outputDirectory>src</outputDirectory>
      <fileMode>0644</fileMode>
      <directoryMode>0755</directoryMode>
    </fileSet>
    <!-- Include top level bin directory -->
    <fileSet>
        <directory>${project.basedir}/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
      <directoryMode>0755</directoryMode>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/src</directory>
      <outputDirectory>src</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/tools</directory>
      <outputDirectory>tools</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}</directory>
      <outputDirectory>.</outputDirectory>
      <includes>
        <include>pom.xml</include>
        <include>LICENSE.txt</include>
        <include>NOTICE.txt</include>
        <include>CHANGES.txt</include>
        <include>DISCLAIMER.txt</include>
        <include>BUILDING.txt</include>
        <include>README.md</include>
      </includes>
      <fileMode>0644</fileMode>
    </fileSet>
</fileSets>
</assembly>
