<!--
 ! 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>source-release</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.basedir}</directory>
      <outputDirectory>/</outputDirectory>
      <useDefaultExcludes>true</useDefaultExcludes>
      <includes>
        <include>**/DISCLAIMER</include>
        <include>**/LICENSE</include>
        <include>**/NOTICE</include>
        <include>**/README</include>
        <include>**/src/**</include>
        <include>**/results/**</include>
        <include>**/pom.xml</include>
        <include>**/build*.xml</include>
        <include>**/findbugs*.xml</include>
        <include>**/*site.xml</include>
        <include>**/*.adm</include>
        <include>**/*.json</include>
        <include>**/*.aql</include>
        <include>**/*.ddl</include>
        <include>**/*.seq</include>
        <include>**/*.rc</include>
        <include>**/*.big</include>
        <include>**/*textFileS</include>
        <include>**/*large_text</include>
        <include>**/*.csv*</include>
        <include>**/*.tbl</include>
        <include>**/*.txt</include>
        <include>**/part-*</include>
        <include>**/*.cleaned</include>
        <include>**/*.md</include>
      </includes>
      <excludes>
        <exclude>**/${project.build.directory}/**</exclude>
      </excludes>
    </fileSet>
  </fileSets>
</assembly>
