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

-->
<assembly>
  <id>src</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <!-- Binary Files -->
    <fileSet>
      <outputDirectory></outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
      <excludes>

        <!-- release-plugin temp files -->
        <exclude>**/pom.xml.releaseBackup</exclude>
        <exclude>**/release.properties</exclude>

        <exclude>**/target/**</exclude>

        <exclude>**/build/**</exclude>
        <!-- exclude>data/**</exclude>
        <exclude>*/data/**</exclude -->
        <exclude>activemq-data/**</exclude>
        <exclude>*/activemq-data/**</exclude>
        <exclude>**/eclipse-classes/**</exclude>
        <exclude>**/.*</exclude>
        <exclude>**/.*/**</exclude>

        <exclude>**/surefire*</exclude>
        <exclude>**/svn-commit*</exclude>

        <!-- IntelliJ -->
        <exclude>**/.idea/**</exclude>
        <exclude>**/*.iml</exclude>
        <exclude>**/*.ipr</exclude>
        <exclude>**/*.iws</exclude>

        <!-- Eclipse -->
        <exclude>**/.project</exclude>
        <exclude>**/.classpath]</exclude>
        <exclude>**/.settings/**</exclude>

        <exclude>**/cobertura.ser</exclude>

        <exclude>**/node_modules/**</exclude>
        <exclude>**/.flattened-pom.xml</exclude>
      </excludes>
    </fileSet>

  </fileSets>
</assembly>
