<?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>src</id>
  <formats>
    <format>zip</format>
    <format>tar.gz</format>
    <format>tar.bz2</format>
  </formats>
  
  <fileSets>
    <fileSet>
        <!-- Include license and notices generated by the remote resources plugin -->
        <directory>../target/maven-shared-archive-resources/META-INF</directory>
        <outputDirectory>src</outputDirectory>
        <includes>
            <include>*</include>
        </includes>
    </fileSet>        

    <fileSet>
      <directory>..</directory>
      <outputDirectory>src</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
      <excludes>
        <exclude>KEYS</exclude>
        <exclude>LICENSE.txt</exclude>
        <exclude>NOTICE.txt</exclude>
        <exclude>core/res</exclude>
        <exclude>core/res/**/*</exclude>

        <exclude>**/target</exclude>
        <exclude>**/target/**/*</exclude>
        <exclude>**/.settings</exclude>
        <exclude>**/.settings/**/*</exclude>
        <exclude>**/.classpath</exclude>
        <exclude>**/.project</exclude>
        <exclude>**/*.gen</exclude>
        <exclude>**/.wtpmodules</exclude>
        <exclude>**/surefire*</exclude>
        <exclude>**/cobertura.ser</exclude>
        <exclude>**/velocity.log</exclude>
        <exclude>**/derby.log</exclude>
      </excludes>
    </fileSet>
  </fileSets>
</assembly>

