<!--
   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.01

   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.
-->
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>hadoop-yarn-dist</id>
  <formats>
    <format>dir</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/target/native/target/usr/local/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <includes>
        <include>yarn</include>
        <include>yarn.cmd</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/bin</directory>
      <outputDirectory>libexec</outputDirectory>
      <includes>
        <include>yarn-config.sh</include>
        <include>yarn-config.cmd</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/bin</directory>
      <outputDirectory>sbin</outputDirectory>
      <includes>
        <include>yarn-daemon.sh</include>
        <include>yarn-daemons.sh</include>
        <include>start-yarn.sh</include>
        <include>stop-yarn.sh</include>
        <include>start-yarn.cmd</include>
        <include>stop-yarn.cmd</include>
        <include>FederationStateStore**/**</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/conf</directory>
      <outputDirectory>etc/hadoop</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-api/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-client/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-common/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/target</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/sources</outputDirectory>
      <includes>
        <include>*-sources.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf</directory>
      <outputDirectory>etc/hadoop</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${basedir}</directory>
      <outputDirectory>/share/doc/hadoop/${hadoop.component}</outputDirectory>
      <includes>
        <include>*.txt</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}/webapps</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/webapps</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${basedir}/src/main/conf</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/templates</outputDirectory>
      <includes>
        <include>*-site.xml</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${basedir}/src/main/packages/templates/conf</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/templates/conf</outputDirectory>
      <includes>
        <include>*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${basedir}/dev-support/jdiff</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/jdiff</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}/site/jdiff/xml</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/jdiff</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}/site</directory>
      <outputDirectory>/share/doc/hadoop/${hadoop.component}</outputDirectory>
    </fileSet>
    <!-- Copy dependecies from hadoop-yarn-server-timelineservice as well -->
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase/target/lib</directory>
      <outputDirectory>share/hadoop/${hadoop.component}/timelineservice/lib</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>hadoop-yarn/hadoop-yarn-ui/target/hadoop-yarn-ui-${project.version}</directory>
      <outputDirectory>/share/hadoop/${hadoop.component}/webapps/rm</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
  </fileSets>
  <moduleSets>
    <moduleSet>
      <includes>
        <include>org.apache.hadoop:hadoop-yarn-server-timelineservice</include>
        <include>org.apache.hadoop:hadoop-yarn-server-timelineservice-hbase</include>
      </includes>
      <binaries>
        <outputDirectory>share/hadoop/${hadoop.component}/timelineservice</outputDirectory>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
    <moduleSet>
      <includes>
        <include>org.apache.hadoop:hadoop-yarn-server-timelineservice-hbase-tests</include>
      </includes>
      <binaries>
        <outputDirectory>share/hadoop/${hadoop.component}/timelineservice/test</outputDirectory>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
    <moduleSet>
      <excludes>
        <exclude>org.apache.hadoop:hadoop-yarn-server-timelineservice*</exclude>
      </excludes>
      <binaries>
        <outputDirectory>share/hadoop/${hadoop.component}</outputDirectory>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
    <moduleSet>
      <includes>
        <include>org.apache.hadoop:hadoop-yarn-server-tests</include>
      </includes>
      <binaries>
        <attachmentClassifier>tests</attachmentClassifier>
        <outputDirectory>share/hadoop/${hadoop.component}/test</outputDirectory>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
  </moduleSets>
  <dependencySets>
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <outputDirectory>/share/hadoop/${hadoop.component}/lib</outputDirectory>
      <!-- Exclude hadoop artifacts. They will be found via HADOOP* env -->
      <excludes>
        <exclude>org.apache.hadoop:*</exclude>
        <!-- Exclude shaded jackson jars to avoid leaking new dependencies -->
        <exclude>com.fasterxml.jackson.core:*</exclude>
        <!-- use slf4j from common to avoid multiple binding warnings -->
        <exclude>org.slf4j:slf4j-api</exclude>
        <exclude>org.slf4j:slf4j-log4j12</exclude>
        <exclude>org.hsqldb:hsqldb</exclude>
      </excludes>
    </dependencySet>
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <outputDirectory>/share/hadoop/${hadoop.component}/lib-examples</outputDirectory>
      <includes>
        <include>org.hsqldb:hsqldb</include>
      </includes>
    </dependencySet>
  </dependencySets>
</assembly>
