<?xml version="1.0" encoding="UTF-8"?>
<!-- #%L SAMOA %% Copyright (C) 2013 - 2014 Yahoo! Inc. %% 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. #L% -->

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

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  <id>dist</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>${basedir}/..</directory>
      <includes>
        <include>README*</include>
        <include>LICENSE*</include>
        <include>NOTICE*</include>
      </includes>
    </fileSet>
    <fileSet>
      <outputDirectory>bin</outputDirectory>
      <directory>${basedir}/../bin/samza-dist</directory>
      <includes>
        <include>run-class.sh</include>
        <include>run-am.sh</include>
        <include>run-container.sh</include>
        <include>run-job.sh</include>
      </includes>
    </fileSet>
  </fileSets>
  <files>
    <file>
      <outputDirectory>lib</outputDirectory>
      <source>${basedir}/src/main/resources/log4j.xml</source>
    </file>
  </files>
  <dependencySets>
    <!-- <dependencySet> <outputDirectory>bin</outputDirectory> <includes> <include>org.apache.samza:samza-shell:tgz:dist:*</include> 
      </includes> <fileMode>0744</fileMode> <unpack>true</unpack> </dependencySet> -->
    <dependencySet>
      <unpack>true</unpack>
      <includes>
        <include>org.slf4j:slf4j-log4j12</include>
        <include>org.apache.samza:samza-api</include>
        <include>org.apache.samza:samza-core_2.10</include>
        <include>org.apache.samza:samza-serializers_2.10</include>
        <include>org.apache.samza:samza-yarn_2.10</include>
        <include>org.apache.samza:samza-kafka_2.10</include>
        <include>org.apache.kafka:kafka_2.10</include>
      </includes>
      <useTransitiveFiltering>true</useTransitiveFiltering>
      <useTransitiveDependencies>true</useTransitiveDependencies>
    </dependencySet>
    <dependencySet>
      <unpack>true</unpack>
      <includes>
        <include>${groupId}:samoa-api</include>
        <include>${groupId}:${artifactId}</include>
      </includes>
      <unpackOptions>
        <excludes>
          <exclude>META-INF/services/org.apache.hadoop.security.*</exclude>
        </excludes>
      </unpackOptions>
      <useTransitiveFiltering>true</useTransitiveFiltering>
      <useTransitiveDependencies>true</useTransitiveDependencies>
    </dependencySet>
  </dependencySets>
</assembly>
