<?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></id>
	<formats>
		<format>tar.gz</format>
		<format>zip</format>
	</formats>
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets>
		<!-- TODO see how to get this working -->
		<fileSet>
			<directory>target/site/apidocs</directory>
			<outputDirectory>apidocs</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory>src</outputDirectory>
			<useDefaultExcludes>true</useDefaultExcludes>
			<includes>
				<include>pom.xml</include>
				<include>empire-db/**</include>
				<include>empire-db-struts2/**</include>
				<include>empire-db-examples/**</include>
			</includes>
			<excludes>
				<exclude>**/empire-db/target/**</exclude>
				<exclude>**/empire-db-*/target/**</exclude>
				<exclude>**/.classpath/**</exclude>
				<exclude>**/.project/**</exclude>
				<exclude>**/.settings/**</exclude>
				<exclude>**/.amateras/**</exclude>
				<exclude>**/.tomcatplugin/**</exclude>
				<exclude>empire-db-examples/tutorial.pdf</exclude>
			</excludes>
		</fileSet>
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory/>
			<useDefaultExcludes>true</useDefaultExcludes>
			<includes>
				<include>LICENSE.txt</include>
				<include>NOTICE.txt</include>
				<include>README.txt</include>
				<include>CHANGELOG.txt</include>
				<!-- <include>licenses/**</include> -->
			</includes>
		</fileSet>
		<fileSet>
			<directory>empire-db-examples</directory>
			<outputDirectory/>
			<includes>
				<include>tutorial.pdf</include>
			</includes>
		</fileSet>
	</fileSets>
	<moduleSets>
		<moduleSet>
			<includes>
				<include>org.apache.empire-db:empire-db</include>
				<include>org.apache.empire-db:empire-db-struts2</include>
			</includes>
			<binaries>
				<outputDirectory>lib</outputDirectory>
				<unpack>false</unpack>
				<includeDependencies>false</includeDependencies>
			</binaries>
		</moduleSet>
	</moduleSets>
</assembly>
