<!--
 Copyright (c) 2017 Wind River Systems, Inc.
 Copyright (c) 2017-2018 VMware, 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.
-->
<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>multivimbroker</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>multivimbroker</directory>
            <outputDirectory>/multivimbroker</outputDirectory>
            <includes>
                <include>**/*.py</include>
                <include>**/*.json</include>
                <include>**/*.xml</include>
                <include>**/*.wsdl</include>
                <include>**/*.xsd</include>
                <include>**/*.bpel</include>
                <include>**/*.yml</include>
                <include>**/*.crt</include>
                <include>**/*.key</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>logs</directory>
            <outputDirectory>/logs</outputDirectory>
            <includes>
                <include>*.txt</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>docker</directory>
            <outputDirectory>/docker</outputDirectory>
            <includes>
                <include>*.sh</include>
                <include>Dockerfile</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>.</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.py</include>
                <include>*.txt</include>
                <include>*.sh</include>
                <include>*.ini</include>
                <include>*.md</include>
                <include>*.yml</include>
            </includes>
        </fileSet>
    </fileSets>
    <baseDirectory>multivimbroker</baseDirectory>
    <!--baseDirectory>multivimdriver-broker/multivimbroker</baseDirectory-->
</assembly>
