<!--
  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>
    <id>examples</id>
    <formats>
        <format>dir</format>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <fileSet>
            <directory>${basedir}/src/main/java</directory>
            <outputDirectory>/examples/src</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${basedir}/src/main/apps</directory>
            <outputDirectory>/examples/apps</outputDirectory>
        </fileSet>
    </fileSets>

    <files>
        <file>
            <source>${basedir}/src/main/data/data.txt</source>
            <outputDirectory>/examples/input-data/text</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log01.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/00/20</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/00/20</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log02.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/00/40</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/00/40</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log03.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/00</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/00</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log04.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/20</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/20</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log05.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/40</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/01/40</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/log06.txt</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/02/00</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/data/_SUCCESS</source>
            <outputDirectory>/examples/input-data/rawLogs/2010/01/01/02/00</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/aggregator/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/custom-main/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/demo/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/hadoop-el/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/java-main/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/datelist-java-main/lib</outputDirectory>
        </file>
        <file>
            <source>${basedir}/target/${artifact.artifactId}-${artifact.version}.jar</source>
            <outputDirectory>/examples/apps/map-reduce/lib</outputDirectory>
        </file> 
    </files>

</assembly>
