<?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>binary</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>target/aggregate</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
        <fileSet>
            <includes>
                <include>README</include>
                <include>DISCLAIMER</include>
                <include>LICENSE</include>
                <include>STATUS</include>
                <include>NOTICE</include>
                <include>README.txt</include>
                <include>DISCLAIMER.txt</include>
                <include>STATUS.txt</include>
                <include>RELEASE-NOTES</include>
                <include>RELEASE-NOTES.html</include>
                <include>RELEASE-NOTES.txt</include>
                <include>CHANGES</include>
                <include>CHANGES.txt</include>
            </includes>
        </fileSet>
        <!--
        <fileSet>
            <directory>licenses</directory>
            <outputDirectory>/lib</outputDirectory>
            <includes>
                <include>*</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>target/examples</directory>
            <outputDirectory>/examples</outputDirectory>
        </fileSet>
        -->
        <fileSet>
            <directory>target/docbook</directory>
            <outputDirectory>docs/docbook</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>../target/site/apidocs</directory>
            <outputDirectory>docs/javadoc</outputDirectory>
        </fileSet>
        <fileSet>
        	<directory>../openjpa-persistence/target/classes/org/apache/openjpa/persistence</directory>
        	<outputDirectory>docs/schema</outputDirectory>
        	<includes>
        		<include>extendable-orm.xsd</include>
        		<include>openjpa-orm.xsd</include>
        	</includes>
        </fileSet>        
        <fileSet>
            <directory>../openjpa-examples/image-gallery</directory>
            <outputDirectory>examples/image-gallery</outputDirectory>
            <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/*.log</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.*/**</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>../openjpa-examples/openbooks</directory>
            <outputDirectory>examples/openbooks</outputDirectory>
            <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/*.log</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.*/**</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>../openjpa-examples/opentrader</directory>
            <outputDirectory>examples/opentrader</outputDirectory>
            <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/*.log</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.*/**</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>../openjpa-examples/simple/src/main/java</directory>
            <outputDirectory>examples/simple</outputDirectory>
            <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/*.log</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.*/**</exclude>
            </excludes>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <unpack>false</unpack>
            <scope>runtime</scope>
            <includes>
                <include>org.apache.openjpa:openjpa</include>
                <include>org.apache.openjpa:openjpa-all</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
            <unpack>false</unpack>
            <scope>runtime</scope>
            <includes>
                <include>net.sourceforge.serp:serp</include>
                <include>org.apache.derby:derby</include>

                <include>commons-lang:commons-lang</include>
                <include>commons-collections:commons-collections</include>
                <include>commons-pool:commons-pool</include>
                <include>commons-logging:commons-logging</include>
                <include>commons-dbcp:commons-dbcp</include>

                <include>org.apache.geronimo.specs:geronimo-jta_1.1_spec</include>
                <include>org.apache.geronimo.specs:geronimo-jpa_2.0_spec</include>
                <include>org.apache.geronimo.specs:geronimo-jms_1.1_spec</include>
                <include>org.apache.geronimo.specs:geronimo-validation_1.0_spec</include>
                <include>org.apache.bval:org.apache.bval.bundle</include>
                <include>commons-beanutils:commons-beanutils</include>
                <include>asm:asm</include>
            </includes>
        </dependencySet>
    </dependencySets>
</assembly>
