<?xml version="1.0"?>
<!--

    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.

-->
<component 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">
  <dependencySets>
    <dependencySet>
      <!-- Now, select which projects to include in this module-set. -->
      <includes>
        <include>org.apache.drill.exec:drill-jdbc:jar</include>
        <include>org.apache.drill:drill-protocol:jar</include>
        <include>org.apache.drill:drill-common:jar</include>
        <include>org.apache.drill:drill-logical:jar</include>
        <include>org.apache.drill.exec:vector:jar</include>
        <include>org.apache.drill.memory:drill-memory-base:jar</include>
        <include>org.apache.drill.exec:drill-rpc:jar</include>
        <include>org.apache.drill.exec:drill-java-exec:jar</include>
        <include>org.apache.drill.metastore:drill-metastore-api:jar</include>
        <include>org.apache.drill.metastore:drill-iceberg-metastore:jar</include>
        <include>org.apache.drill.metastore:drill-rdbms-metastore:jar</include>
        <include>org.apache.drill.metastore:drill-mongo-metastore:jar</include>
        <include>org.apache.drill.contrib.storage-hive:drill-storage-hive-core:jar</include>
        <include>org.apache.drill.contrib.storage-hive:drill-hive-exec-shaded:jar</include>
        <include>org.apache.drill.contrib.data:tpch-sample-data:jar</include>
        <include>org.apache.drill.contrib:drill-mongo-storage:jar</include>
        <include>org.apache.drill.contrib:drill-storage-hbase:jar</include>
        <include>org.apache.drill.contrib:drill-format-mapr:jar</include>
        <include>org.apache.drill.contrib:drill-format-syslog:jar</include>
        <include>org.apache.drill.contrib:drill-format-esri:jar</include>
        <include>org.apache.drill.contrib:drill-format-xml:jar</include>
        <include>org.apache.drill.contrib:drill-format-image:jar</include>
        <include>org.apache.drill.contrib:drill-format-pcapng:jar</include>
        <include>org.apache.drill.contrib:drill-format-hdf5:jar</include>
        <include>org.apache.drill.contrib:drill-format-log:jar</include>
        <include>org.apache.drill.contrib:drill-format-ltsv:jar</include>
        <include>org.apache.drill.contrib:drill-format-httpd:jar</include>
        <include>org.apache.drill.contrib:drill-format-pdf:jar</include>
        <include>org.apache.drill.contrib:drill-format-excel:jar</include>
        <include>org.apache.drill.contrib:drill-format-msaccess:jar</include>
        <include>org.apache.drill.contrib:drill-format-spss:jar</include>
        <include>org.apache.drill.contrib:drill-format-sas:jar</include>
        <include>org.apache.drill.contrib:drill-jdbc-storage:jar</include>
        <include>org.apache.drill.contrib:drill-kudu-storage:jar</include>
        <include>org.apache.drill.contrib:drill-storage-phoenix:jar</include>
        <include>org.apache.drill.contrib:drill-storage-splunk:jar</include>
        <include>org.apache.drill.contrib:drill-storage-googlesheets:jar</include>
        <include>org.apache.drill.contrib:drill-storage-kafka:jar</include>
        <include>org.apache.drill.contrib:drill-storage-elasticsearch:jar</include>
        <include>org.apache.drill.contrib:drill-storage-cassandra:jar</include>
        <include>org.apache.drill.contrib:drill-storage-http:jar</include>
        <include>org.apache.drill.contrib:drill-opentsdb-storage:jar</include>
        <include>org.apache.drill.contrib:drill-udfs:jar</include>
        <include>org.apache.drill.contrib:drill-druid-storage:jar</include>
        <include>org.apache.drill.contrib:drill-iceberg-format:jar</include>
        <include>org.apache.drill.contrib:drill-deltalake-format:jar</include>
        <include>org.apache.drill.contrib:drill-storage:jar</include>
      </includes>
      <outputDirectory>jars</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>

    <dependencySet>
      <!-- Drill-on-YARN goes into its own directory so it does not end up
           on the Drillbit class path. Define the jars/tools folder as any jar
           we ship that is not used by drillbits. -->
      <includes>
        <include>org.apache.drill:drill-yarn:jar</include>
      </includes>
      <outputDirectory>jars/tools</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>

    <dependencySet>
      <includes>
        <include>org.apache.drill.exec:drill-jdbc-all:jar</include>
      </includes>
      <outputDirectory>jars/jdbc-driver</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>

    <dependencySet>
      <outputDirectory>jars/classb</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>org.glassfish.jersey.containers</include>
        <include>org.glassfish.jersey.core</include>
        <include>org.reflections</include>
        <include>org.glassfish.hk2.external</include>
        <include>org.eclipse.jetty</include>
        <include>javax.activation</include>
        <include>javax.annotation</include>
        <include>org.glassfish.jersey.containers</include>
        <include>org.glassfish.jersey.core</include>
        <include>org.glassfish.jersey.ext</include>
        <include>org.glassfish.jersey.media</include>
        <include>org.glassfish.hk2</include>
        <include>javax.servlet</include>
        <include>javax.ws.rs</include>
        <include>org.jvnet.mimepull</include>
        <include>com.sun.codemodel</include>
        <include>javax.xml.bind</include>
        <include>ch.qos.logback</include>
        <include>ch.qos.logback</include>
      </includes>
      <scope>test</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/3rdparty/</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <excludes>
        <exclude>org.apache.zookeeper</exclude>
        <exclude>org.apache.drill</exclude>
        <exclude>org.apache.drill.exec</exclude>
        <exclude>org.apache.drill.contrib</exclude>
        <exclude>org.apache.drill.contrib.data</exclude>
        <exclude>org.apache.drill.contrib.storage-hive</exclude>
        <exclude>org.apache.drill.memory</exclude>
        <exclude>org.apache.drill.metastore</exclude>
        <exclude>org.junit.jupiter:*:jar</exclude>
        <exclude>org.junit.platform:*:jar</exclude>
        <exclude>org.junit.vintage:*:jar</exclude>
        <!-- Below Hive jars are already included in drill-hive-exec-shaded.jar -->
        <exclude>junit:junit:jar</exclude>
        <!-- exclude or sqlline has problems -->
        <exclude>org.glassfish.jersey.containers</exclude>
        <exclude>org.glassfish.jersey.core</exclude>
        <exclude>org.reflections</exclude>
        <exclude>org.glassfish.hk2.external</exclude>
        <exclude>org.eclipse.jetty</exclude>
        <exclude>javax.activation</exclude>
        <exclude>javax.annotation</exclude>
        <exclude>org.glassfish.jersey.containers</exclude>
        <exclude>org.glassfish.jersey.core</exclude>
        <exclude>org.glassfish.jersey.ext</exclude>
        <exclude>org.glassfish.jersey.media</exclude>
        <exclude>org.glassfish.hk2</exclude>
        <exclude>javax.servlet</exclude>
        <exclude>javax.ws.rs </exclude>
        <exclude>org.jvnet.mimepull</exclude>
        <exclude>com.sun.codemodel</exclude>
        <exclude>javax.xml.bind</exclude>
        <exclude>ch.qos.logback </exclude>
        <exclude>ch.qos.logback</exclude>
        <exclude>io.netty:netty-tcnative</exclude>
      </excludes>
      <scope>test</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/ext</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>org.apache.zookeeper:zookeeper</include>
        <include>org.apache.zookeeper:zookeeper-jute</include>
      </includes>
      <scope>runtime</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/3rdparty/linux</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>io.netty:netty-tcnative:jar:linux-x86_64:2.0.48.Final</include>
      </includes>
      <scope>test</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/3rdparty/fedora</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>io.netty:netty-tcnative:jar:linux-x86_64-fedora:2.0.48.Final</include>
      </includes>
      <scope>test</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/3rdparty/windows</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>io.netty:netty-tcnative:jar:windows-x86_64:2.0.36.Final</include>
      </includes>
      <scope>test</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>jars/3rdparty/osx</outputDirectory>
      <unpack>false</unpack>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>io.netty:netty-tcnative:jar:osx-x86_64:2.0.48.Final</include>
      </includes>
      <scope>test</scope>
    </dependencySet>
  </dependencySets>

  <fileSets>
    <fileSet>
      <directory>../sample-data</directory>
      <outputDirectory>sample-data</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}/winutils</directory>
      <outputDirectory>winutils/bin</outputDirectory>
    </fileSet>
  </fileSets>

  <files>
    <file>
      <source>../KEYS</source>
      <outputDirectory />
    </file>
    <file>
      <source>src/main/resources/LICENSE</source>
      <outputDirectory />
    </file>
    <file>
      <source>src/main/resources/README.md</source>
      <outputDirectory />
    </file>
    <file>
      <source>../NOTICE</source>
      <outputDirectory />
    </file>
    <file>
      <source>../git.properties</source>
      <outputDirectory />
    </file>
    <file>
      <source>src/main/resources/runbit</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/hadoop-excludes.txt</source>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drillbit.sh</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-conf</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-embedded</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-embedded.bat</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-localhost</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-config.sh</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/sqlline</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/sqlline.bat</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-on-yarn.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-am.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/yarn-drillbit.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/submit_plan</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-override.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/logback.xml</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/yarn-client-log.xml</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/drill-am-log.xml</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/drill-env.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>conf</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/distrib-env.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>conf</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/auto-setup.sh</source>
      <fileMode>0755</fileMode>
      <outputDirectory>bin</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-setup.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>conf</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/distrib-setup.sh</source>
      <fileMode>0750</fileMode>
      <outputDirectory>conf</outputDirectory>
    </file>
    <file>
      <source>src/main/resources/drill-override-example.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/core-site-example.xml</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/saffron.properties</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/drill-on-yarn-example.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/storage-plugins-override-example.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/drill-sqlline-override-example.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
    <file>
      <source>src/main/resources/drill-metastore-override-example.conf</source>
      <outputDirectory>conf</outputDirectory>
      <fileMode>0640</fileMode>
    </file>
  </files>

</component>
