<?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.
-->

<!-- $Rev: 576067 $ $Date: 2007-09-16 03:17:08 -0700 (Sun, 16 Sep 2007) $ -->

<assembly>
  <id>tomee-webprofile</id>
  <formats>
    <format>tar.gz</format>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>${webprofile.work-dir}/apache-tomcat-${tomcat.version}</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
      <excludes>
        <exclude>LICENSE</exclude>
        <exclude>NOTICE</exclude>
        <exclude>**/bin/**/*</exclude>
        <exclude>**/lib/tomcat-annotations-api*.jar</exclude>
      </excludes>
    </fileSet>
    <fileSet>
      <directory>${basedir}/target/maven-shared-archive-resources/META-INF/</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}</outputDirectory>
      <includes>
        <include>LICENSE</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${basedir}/src/main/resources/META-INF/webprofile/</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}</outputDirectory>
      <includes>
        <include>*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/target/classes</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}/bin</outputDirectory>
      <includes>
        <include>service.*</include>
        <include>TomEE.*</include>
        <include>tomee.bat</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/target/classes</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}/bin</outputDirectory>
      <includes>
        <include>*.sh</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>
    <fileSet>
      <directory>${webprofile.work-dir}/apache-tomcat-${tomcat.version}</directory>
      <outputDirectory>/apache-tomee-webprofile-${project.version}</outputDirectory>
      <includes>
        <include>**/bin/**/*</include>
      </includes>
      <fileMode>0755</fileMode>
    </fileSet>
  </fileSets>
</assembly>

