<assembly>
  <!--
  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.
  -->
  <id>bin</id>
  <!-- 
  Generates a jar file including the binary jar and the runtime dependencies.
  including NOTICE and LICENSE in the root.
  -->
  <formats>
    <format>zip</format>
    <format>tar.gz</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.basedir}/..</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>LICENSE</include>
        <include>NOTICE</include>
        <include>RELEASE_NOTES.txt</include>
        <include>README</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../core/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>apache-mime4j*.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../dom/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>apache-mime4j*.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../storage/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>apache-mime4j*.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../benchmark/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>apache-mime4j*.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}/../examples/target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>apache-mime4j*.jar</include>
      </includes>
    </fileSet>
  </fileSets>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/lib/</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <scope>runtime</scope>
      <excludes>
        <exclude>apache-mime4j*</exclude>
      </excludes>
    </dependencySet>
  </dependencySets>
</assembly>
