<?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>
  
  <baseDirectory>apache-${project.artifactId}-${project.version}</baseDirectory>
  <formats>
    <!--
    <format>tar.gz</format>
    <format>tar.bz2</format>
    -->
    <format>zip</format>
  </formats>

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

  <fileSets>
    <fileSet>
      <includes>
        <include>README*</include>
        <include>LICENSE*</include>
        <include>NOTICE*</include>
        <include>DEPENDENCIES*</include>
        <include>ChangeLog.txt</include>
        <include>pom.xml</include>
      </includes>
    </fileSet>
    
     <!-- Put sources at the top level -->
    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory></outputDirectory>
      <includes>
        <include>${this.root}-sources.jar</include>
        <!--<include>${this.root}-test-sources.jar</include>-->
      </includes>
    </fileSet>

     <fileSet>
      <directory>doc</directory>
      <excludes>
        <exclude>linkcheck</exclude>
        <exclude>merge</exclude>
        <exclude>produce</exclude>
        <exclude>template.html</exclude>
        <exclude>javadoc/**</exclude>
        <exclude>**/_*/**</exclude>
        <exclude>**/desktop.ini</exclude>
      </excludes>
    </fileSet>

    <fileSet>
      <directory>${project.build.directory}/apidocs</directory>
      <outputDirectory>doc/javadoc</outputDirectory>
    </fileSet>
    
  </fileSets>
  
</assembly>
