<?xml version="1.0" ?>

<!--
  ~ 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>src</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>.</directory>
      <outputDirectory>/</outputDirectory>
      <excludes>
        <exclude>**/target/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/css/redback/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/images/redback/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/META-INF/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/template/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/classes/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/lib/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/database/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/logs/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/redback/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/jsp/redback/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/template/redback/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/logs/**</exclude>
        <exclude>continuum-webapp/src/main/webapp/WEB-INF/temp/**</exclude>
      </excludes>
    </fileSet>
    <fileSet>
      <directory>target/maven-shared-archive-resources/META-INF/</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>NOTICE</include>
        <include>LICENSE</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

