<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 *
 * Licensed 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.
 */
 -->
<project>
    <pomVersion>3</pomVersion>
    <extend>../../etc/project.xml</extend>

    <id>axis2-adb</id>
    <name>Apache Axis 2.0 - Data Binding</name>
    <groupId>org.apache.axis2</groupId>
    <description>Axis2 Data Binding module</description>

    <dependencies>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-api</artifactId>
            <version>${axiom.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-impl</artifactId>
            <version>${axiom.version}</version>
        </dependency>
		<dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-dom</artifactId>
            <version>${axiom.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>${pom.currentVersion}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-java2wsdl</artifactId>
            <version>${pom.currentVersion}</version>
        </dependency>
              <dependency>
            <groupId>org.apache.ws.commons.schema</groupId>
            <artifactId>XmlSchema</artifactId>
            <version>${XmlSchema.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>${activation.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>${commons.logging.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>${stax.impl.groupid}</groupId>
            <artifactId>${stax.impl.artifactid}</artifactId>
            <version>${stax.impl.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>${stax.api.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>${wsdl4j.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <version>${xmlunit.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>backport-util-concurrent</groupId>
            <artifactId>backport-util-concurrent</artifactId>
            <version>${backport_util_concurrent.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
         <dependency>
            <groupId>annogen</groupId>
            <artifactId>annogen</artifactId>
            <version>${annogen.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
    </dependencies>

    <reports/>
    <!-- add the build properties-->
    <build>
        <resources>
            <resource>
                <directory>src</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.xsl</include>
                    <include>**/*.xsd</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>
