<!--
  ~ 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>plugin</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>./target/classes</directory>
            <outputDirectory>classes</outputDirectory>
     	</fileSet>
        <fileSet>
            <directory>./target/classes/META-INF</directory>
            <outputDirectory>META-INF</outputDirectory>
     	</fileSet>
    </fileSets>
	<dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>org.apache.ws.commons.axiom:axiom-api:jar</include>
                <include>org.apache.ws.commons.axiom:axiom-dom:jar</include>
                <include>org.apache.ws.commons.axiom:axiom-impl:jar</include>                
                <include>org.codehaus.woodstox:wstx-asl:jar</include>
                <include>org.apache.neethi:neethi:jar</include>
                <include>stax:stax-api:jar</include>                
                <include>org.apache.xmlbeans:xmlbeans:jar</include>
                <include>org.apache.ws.commons.schema:XmlSchema:jar</include>
                <include>log4j:log4j:jar</include>
                <include>org.apache.woden:woden:jar</include>               
                <include>commons-logging:commons-logging:jar</include>               
                <include>org.apache.ant:ant:jar</include>
		<include>org.apache.axis2:axis2-codegen:jar</include>
		<include>org.apache.axis2:axis2-kernel:jar</include>
		<include>org.apache.axis2:axis2-adb:jar</include>
		<include>org.apache.axis2:axis2-adb-codegen:jar</include>
		<include>org.apache.axis2:axis2-java2wsdl:jar</include>
		<include>org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar</include>
		<include>org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar</include>
		<include>wsdl4j:wsdl4j:jar</include>
            </includes>
        </dependencySet>
	</dependencySets>
</assembly>
