<!--
 ! 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-assembly</id>
	<formats>
		<format>zip</format>
		<format>dir</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>src/main/resources/conf</directory>
			<outputDirectory>conf</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/clusters</directory>
			<outputDirectory>clusters</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/examples</directory>
			<outputDirectory>examples</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/zookeeper</directory>
			<fileMode>0755</fileMode>
			<outputDirectory>.installer/zookeeper/bin</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/scripts</directory>
			<fileMode>0755</fileMode>
			<includes>
				<include>managix</include>
			</includes>
			<outputDirectory>bin</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/scripts</directory>
			<fileMode>0755</fileMode>
			<excludes>
				<exclude>managix</exclude>
			</excludes>
			<outputDirectory>.installer/scripts</outputDirectory>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/hadoop-0.20.2</directory>
			<outputDirectory>.installer/hadoop-0.20.2</outputDirectory>
			<fileMode>0755</fileMode>
		</fileSet>
		<fileSet>
			<directory>target</directory>
			<outputDirectory>lib</outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>target/classes/META-INF</directory>
			<outputDirectory>.</outputDirectory>
			<includes>
				<include>LICENSE*</include>
				<include>NOTICE*</include>
				<include>DISCLAIMER*</include>
				<include>DEPENDENCIES*</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>../asterix-events/src/main/resources/events</directory>
			<outputDirectory>.installer/events</outputDirectory>
			<fileMode>0755</fileMode>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<includes>
				<include>log4j:log4j</include>
				<include>org.apache.asterix:asterix-events</include>
				<include>org.apache.asterix:asterix-common</include>
				<include>org.apache.zookeeper:zookeeper</include>
				<include>args4j:args4j</include>
				<include>log4j:log4j</include>
				<include>commons-io:commons-io</include>
				<include>org.slf4j:slf4j-api</include>
				<include>org.slf4j:slf4j-log4j12</include>
			</includes>
			<unpack>false</unpack>
			<outputDirectory>lib</outputDirectory>
		</dependencySet>
		<dependencySet>
			<includes>
				<include>org.apache.hadoop:hadoop-core</include>
				<include>commons-cli:commons-cli</include>
				<include>commons-logging:commons-logging</include>
			</includes>
			<unpack>false</unpack>
			<outputDirectory>.installer/hadoop-0.20.2/lib</outputDirectory>
		</dependencySet>
		<dependencySet>
			<includes>
				<include>org.apache.zookeeper:zookeeper</include>
				<include>log4j:log4j</include>
				<include>org.slf4j:slf4j-api</include>
			</includes>
			<unpack>false</unpack>
			<outputDirectory>.installer/zookeeper/lib</outputDirectory>
		</dependencySet>
		<dependencySet>
			<outputDirectory>asterix</outputDirectory>
			<includes>
				<include>asterix-server*</include>
			</includes>
			<useTransitiveDependencies>false</useTransitiveDependencies>
		</dependencySet>
		<dependencySet>
			<outputDirectory>.installer/events</outputDirectory>
			<includes>
				<include>asterix-events*</include>
			</includes>
			<unpack>false</unpack>
			<useTransitiveDependencies>false</useTransitiveDependencies>
		</dependencySet>
		<dependencySet>
			<outputDirectory>extlibs</outputDirectory>
			<includes>
				<include>asterix-external-data:*:zip</include>
			</includes>
			<unpack>false</unpack>
			<useTransitiveDependencies>false</useTransitiveDependencies>
		</dependencySet>
	</dependencySets>
 </assembly>
