<!--
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.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>bin</id>
    <formats>
        <format>dir</format>
    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>
    <baseDirectory>flink-ml-${project.version}</baseDirectory>

    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>

            <includes>
                <include>org.apache.flink:statefun-flink-core</include>
                <include>org.apache.flink:flink-ml-uber-${flink.main.version}</include>
                <include>org.apache.flink:flink-ml-examples-${flink.main.version}</include>
            </includes>
        </dependencySet>
    </dependencySets>

    <files>
        <file>
            <source>../LICENSE</source>
            <outputDirectory/>
            <fileMode>0644</fileMode>
        </file>
    </files>

    <fileSets>
        <!-- copy scripts -->
        <fileSet>
            <directory>src/main/flink-ml-bin/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>

        <!-- copy benchmark json configuration -->
        <fileSet>
            <directory>../flink-ml-benchmark/src/main/resources/</directory>
            <outputDirectory>conf/</outputDirectory>
            <fileMode>0644</fileMode>
            <includes>
                <include>*.json</include>
            </includes>
        </fileSet>

        <!-- copy *.txt files -->
        <fileSet>
            <directory>src/main/flink-ml-bin/</directory>
            <outputDirectory/>
            <fileMode>0644</fileMode>
            <includes>
                <include>*.txt</include>
            </includes>
        </fileSet>

    </fileSets>
</assembly>
