<!--
 ! 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>target/appassembler/repo</directory>
      <outputDirectory>repo</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>target/appassembler/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>target/generated-resources/appassembler/booter-unix/etc</directory>
      <outputDirectory>etc</outputDirectory>
      <includes>
      	<include>asterixcc.xml</include>
      	<include>asterixnc.xml</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>target/generated-resources/appassembler/booter-unix/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>target/generated-resources/appassembler/booter-windows/bin</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
    </fileSet>
  </fileSets>
</assembly>
