<?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 instructions for a client that runs on Java 1.4 -->
<assembly>
  <id>java-client-java1.4-bin</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <formats>
    <format>tar.gz</format>
    <format>zip</format>
  </formats>

  <fileSets>
      <fileSet>
          <!-- Apache license files -->
          <directory>../../resources</directory>
          <outputDirectory>qpid-${qpid.version}</outputDirectory>
          <includes>
              <include>DISCLAIMER</include>
              <include>LICENSE.txt</include>
              <include>NOTICE.txt</include>
              <include>README.txt</include>
          </includes>
      </fileSet>

      <fileSet>
          <directory>../../release-docs</directory>
          <outputDirectory>qpid-${qpid.version}/docs</outputDirectory>
          <includes>
              <include>RELEASE_NOTES.txt</include>
          </includes>
      </fileSet>

      <fileSet>
          <directory>target</directory>
          <outputDirectory>qpid-${qpid.version}/lib</outputDirectory>
          <includes>
              <include>qpid-incubating.jar</include>
          </includes>
      </fileSet>
  </fileSets>

  <dependencySets>
      <dependencySet>
          <outputDirectory>qpid-${qpid.version}/lib</outputDirectory>
          <unpack>false</unpack>
          <excludes>
             <exclude>org.apache.qpid:qpid-client:jar</exclude>
             <exclude>org.apache.qpid:qpid-common:jar</exclude>
             <exclude>org.apache.qpid:qpid-client-distribution</exclude>
             <exclude>org.apache.mina:mina-java5</exclude>
             <exclude>org.apache.mina:mina-filter-ssl</exclude>
          </excludes>
      </dependencySet>
  </dependencySets>
</assembly>


