<?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 xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <!-- TODO: a jarjar format would be better -->
  <id>tests</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <useProjectArtifact>true</useProjectArtifact>
      <unpack>true</unpack>
      <scope>test</scope>
      <excludes>
        <exclude>org.apache.cxf*:*</exclude>
        <exclude>org.apache.openejb*:*</exclude>
        <exclude>org.apache.openjpa*:*</exclude>
        <exclude>org.apache.openwebbeans*:*</exclude>
        <exclude>org.apache.xbean*:*</exclude>
        <exclude>org.apache.myfaces*:*</exclude>
        <exclude>org.apache.tomcat*:*</exclude>
        <exclude>org.hsqldb:*</exclude>
        <exclude>org.jboss.*:*</exclude>
        <exclude>org.eclipse*:*</exclude>
        <exclude>org.codehaus*:*</exclude>
        <exclude>com.sun*:*</exclude>
      </excludes>
    </dependencySet>
  </dependencySets>
</assembly>
