<?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>kitchensink</id>
	<formats>
		<format>tar.gz</format>
		<format>zip</format>
	</formats>
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>archetypes</directory>
			<outputDirectory>src/archetypes</outputDirectory>
			<useDefaultExcludes>true</useDefaultExcludes>
			<excludes>
				<exclude>**/quickstart/target/**</exclude>
				<exclude>**/.classpath/**</exclude>
				<exclude>**/.project/**</exclude>
				<exclude>**/.settings/**</exclude>
				<exclude>**/.amateras/**</exclude>
				<exclude>**/.tomcatplugin/**</exclude>
			</excludes>
		</fileSet>
		<fileSet>
			<directory>target/site/apidocs</directory>
			<outputDirectory>apidocs</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>testing</directory>
			<outputDirectory>src/testing</outputDirectory>
			<useDefaultExcludes>true</useDefaultExcludes>
			<excludes>
				<exclude>target/**</exclude>
				<exclude>**/.classpath/**</exclude>
				<exclude>**/.project/**</exclude>
				<exclude>**/.settings/**</exclude>
				<exclude>**/.amateras/**</exclude>
				<exclude>**/.tomcatplugin/**</exclude>
			</excludes>
		</fileSet>
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory>src</outputDirectory>
			<useDefaultExcludes>true</useDefaultExcludes>
			<includes>
				<include>*.xml</include>
				<include>wicket/**</include>
				<include>wicket-*/**</include>
			</includes>
			<excludes>
				<exclude>**/wicket/target/**</exclude>
				<exclude>**/wicket-*/target/**</exclude>
				<exclude>**/.classpath/**</exclude>
				<exclude>**/.project/**</exclude>
				<exclude>**/.settings/**</exclude>
				<exclude>**/.amateras/**</exclude>
				<exclude>**/.tomcatplugin/**</exclude>
			</excludes>
		</fileSet>
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory/>
			<useDefaultExcludes>true</useDefaultExcludes>
			<includes>
				<include>LICENSE</include>
				<include>NOTICE</include>
				<include>README</include>
				<include>migrate-14.html</include>
				<include>CHANGELOG-1.4</include>
				<include>licenses/**</include>
			</includes>
		</fileSet>
	</fileSets>
	<moduleSets>
		<moduleSet>
			<includes>
				<include>org.apache.wicket:wicket-core</include>
                                <include>org.apache.wicket:wicket-util</include>
                                <include>org.apache.wicket:wicket-request</include>
				<include>org.apache.wicket:wicket-auth-roles</include>
				<include>org.apache.wicket:wicket-datetime</include>
				<include>org.apache.wicket:wicket-examples</include>
				<include>org.apache.wicket:wicket-extensions</include>
				<include>org.apache.wicket:wicket-jmx</include>
				<include>org.apache.wicket:wicket-devutils</include>
				<include>org.apache.wicket:wicket-objectsizeof-agent</include>
				<include>org.apache.wicket:wicket-ioc</include>
				<include>org.apache.wicket:wicket-guice</include>
				<include>org.apache.wicket:wicket-spring</include>
				<include>org.apache.wicket:wicket-velocity</include>
			</includes>
			<binaries>
				<outputDirectory>lib</outputDirectory>
				<unpack>false</unpack>
				<includeDependencies>false</includeDependencies>
			</binaries>
		</moduleSet>
	</moduleSets>
</assembly>
