<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 ! 
 !     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>../asterix-events/src/main/resources/events</directory>
			<outputDirectory>.installer/events</outputDirectory>
			<fileMode>0755</fileMode>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<includes>
				<include>log4j:log4j</include>
				<include>edu.uci.ics.asterix:asterix-events</include>
				<include>edu.uci.ics.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>
	</dependencySets>
 </assembly>
