<?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-xml</id>
    <name>xml</name>
    <description>AXIOM, The Object Model of Axis 2.0. This helps Axis 2.0 to have a light weight, efficient object model on StAX</description>


<build>
    <nagEmailAddress>axis-dev@ws.apache.org</nagEmailAddress>
    <sourceDirectory>src</sourceDirectory>
    <unitTestSourceDirectory>test</unitTestSourceDirectory>

    <unitTest>
	<excludes>
		<exclude>**/*OMOutputTest.java</exclude>
		<exclude>**/*MTOMStAXSOAPModelBuilderTest.java</exclude> 
		<exclude>**/*ImageSampleTest.java</exclude> 
		<exclude>**/*MIMEHelperTest.java</exclude> 
		<exclude>**/*MIMEOutputUtilsTest.java</exclude>
      	</excludes>
      	<includes>
        	<include>**/*Test.java</include>
      	</includes> 
      
    	<resources>
         	<resource>
             		<directory>${basedir}/test-resources</directory>
          	</resource>
          	<resource>
        		<directory>conf</directory>
       			<includes>
          			<include>**/*.properties</include>
        		</includes>
      		</resource>
      		<resource>
       	 		<directory>src</directory>
        		<includes>
          			<include>**/*.properties</include>
          			<include>**/*.xml</include>
        		</includes>
      		</resource>
     	</resources>
    </unitTest>
    
    <resources>
      <resource>
        <directory>conf</directory>
        <includes>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>




    <dependencies>
        <!-- external JARs -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.3</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
        
	<dependency>
            <groupId>stax</groupId>
            <artifactId>stax</artifactId>
            <version>1.1.1-dev</version>
            <properties>
                <module>true</module>
            </properties>
		<url>http://dist.codehaus.org/stax/jars/</url>
        </dependency>
	<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.8</version>
            <properties>
                <module>true</module>
            </properties>
		<url>http://dist.codehaus.org/stax/jars/</url>
        </dependency>

	    <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>1.0</version>
            <properties>
                <module>true</module>
            </properties>
		<url>http://dist.codehaus.org/stax/jars/</url>
        </dependency>
        <dependency>
            <groupId>geronimo-spec</groupId>
            <artifactId>geronimo-spec-javamail</artifactId>
            <version>1.3.1-rc3</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
	<dependency>
            <groupId>geronimo-spec</groupId>
            <artifactId>geronimo-spec-activation</artifactId>
            <version>1.0.2-rc3</version>
            <properties>
                <module>true</module>
            </properties>
        </dependency>
    </dependencies>
    
    <reports/>
</project>
