<!--
 ! 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>
			<fileMode>0755</fileMode>
		</fileSet>
		<fileSet>
			<directory>src/main/resources/scripts</directory>
			<outputDirectory>bin</outputDirectory>
			<fileMode>0755</fileMode>
		</fileSet>
		<fileSet>
                        <directory>../pregelix-core/target/appassembler/lib</directory>
                        <outputDirectory>lib</outputDirectory>
                         <includes>
                                <include>*.jar</include>
                        </includes>
                        <fileMode>0755</fileMode>
                </fileSet>
		<fileSet>
                        <directory>../pregelix-example/target</directory>
                        <outputDirectory>examples</outputDirectory>
                         <includes>
        			<include>*with-dependencies.jar</include>
      			</includes>
			<fileMode>0755</fileMode>
                </fileSet>
		<fileSet>
                        <directory>../pregelix-example/data</directory>
                        <outputDirectory>data</outputDirectory>
                        <fileMode>0755</fileMode>
                </fileSet>
	</fileSets>
</assembly>
