<?xml version="1.0" encoding="UTF-8"?>
<!--
   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>distribution</id>
  <formats>
    <format>tar.gz</format>
    <!--
        <format>tar.bz2</format>
        -->
        <format>zip</format>
  </formats>

  <dependencySets>
    <dependencySet>
      <unpack>false</unpack>
      <outputDirectory>lib</outputDirectory>
      <!-- scoped to test -> no need to exclude.
           <excludes>
             <exclude>org.apache.derby:derby</exclude>
             <exclude>org.hsqldb:hsqldb</exclude>
           </excludes>
           -->
    </dependencySet>
  </dependencySets>

  <files>
    <file>
      <source>dist/LICENSE</source>
      <destName>LICENSE</destName>
    </file>
    <file>
      <source>dist/NOTICE</source>
      <destName>NOTICE</destName>
    </file>
  </files>

  <fileSets>

    <fileSet>
      <includes>
        <include>README*</include>
        <include>ChangeLog.txt</include>
        <include>pom.xml</include>
        <include>sdb.ttl</include>
      </includes>
    </fileSet>

    <fileSet>
      <directory>bin</directory>
    </fileSet>

    <fileSet>
      <directory>bat</directory>
    </fileSet>

    <fileSet>
      <directory>Store</directory>
    </fileSet>

    <fileSet>
      <directory>${project.build.directory}/apidocs</directory>
      <outputDirectory>javadoc</outputDirectory>
    </fileSet>
    
    <fileSet>
      <directory>src-examples</directory>
    </fileSet>

  </fileSets>

</assembly>
