<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>target/maven-shared-archive-resources/META-INF/</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>NOTICE</include>
        <include>LICENSE</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>examples</directory>
    </fileSet>
    <fileSet>
      <directory>target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>${artifactId}-${version}.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>target/site/apidocs</directory>
      <outputDirectory>javadocs</outputDirectory>
    </fileSet>
  </fileSets>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/lib/</outputDirectory>
      <!-- <outputFileNameMapping></outputFileNameMapping> -->
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</assembly>