<?xml version="1.0" encoding="UTF-8"?>
<!--
  #%L
  SAMOA
  %%
  Copyright (C) 2014 - 2015 Apache Software Foundation
  %%
  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>
