<?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>

    <name>Apache Axis 2.0 - Common</name>
    <id>axis2-common</id>
    <groupId>axis2</groupId>
    <description>Common implementation classes</description>

    <reports>
        <report>maven-junit-report-plugin</report>
    </reports>

    <dependencies>
        <!-- external JARs -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>${commons.logging.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        <dependency>
            <groupId>maven-itest-plugin</groupId>
            <artifactId>maven-itest-plugin</artifactId>
            <version>${maven.itest.plugin.version}</version>
            <type>plugin</type>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
                <properties>
                    <classloader>root</classloader>
            </properties>
        </dependency>
    </dependencies>
    <reports/>
</project>
