<?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>
      <useDefaultExcludes>false</useDefaultExcludes>
      <directory>.</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>**/CVS/**</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>.</directory>
      <outputDirectory>/</outputDirectory>
      <excludes>
        <exclude>**/target/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/archiva-applet.jar</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/META-INF/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/images/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/template/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/classes/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/lib/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/database/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/logs/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/css/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/jsp/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/template/redback/**</exclude>
        <exclude>**/archiva-webapp/src/main/webapp/WEB-INF/logs/**</exclude>
        <exclude>**/archiva-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>

