<?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>tar.gz</format>
        <format>zip</format>
    </formats>
    
    <fileSets>
    
        <fileSet>
            <includes>
                <include>README*</include>
                <include>LICENSE*</include>
                <include>NOTICE*</include>
                <include>pom.xml</include>
                <include>*.html</include>
                <include>src/**/*</include>
                <include>*/pom.xml</include>
                <include>*/src/**/*</include>
            </includes>
        </fileSet>
    
    </fileSets>

</assembly>
