<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2005 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>../project.xml</extend>
    <!-- ============== -->
    <!-- Identification -->
    <!-- ============== -->
    <name>JDO1 Reference Implementation</name>
    <artifactId>jdo1-ri</artifactId>
    <currentVersion>1.1</currentVersion>
    <package>org.apache.jdo</package>
    <shortDescription>Java Data Object (JDO) RI</shortDescription>
    <description>The Java Data Objects (JDO) API is a standard interface-based 
Java model abstraction of persistence, developed as Java Specification 
Request 12 JSR 12 under the auspices of the Java Community Process.</description>
    <repository />
    <!-- ============ -->
    <!-- Dependencies -->
    <!-- ============ -->
    <dependencies>
        <dependency>
            <groupId>antlr</groupId>
            <artifactId>antlr</artifactId>
            <version>2.7.5</version>
            <url>http://www.antlr.org/download.html</url>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>geronimo-spec</groupId>
            <artifactId>geronimo-spec-jta</artifactId>
            <version>1.0.1B-rc2</version>
        </dependency>
        <dependency>
            <id>commons-logging</id>
            <version>1.0.4</version>
        </dependency>
        <dependency>
            <groupId>apache-jdo</groupId>
            <artifactId>jdo1-api</artifactId>
            <version>SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>apache-jdo</groupId>
            <artifactId>jdo-btree</artifactId>
            <version>SNAPSHOT</version>
        </dependency>
    </dependencies>
    <!-- =================== -->
    <!-- Build Specification -->
    <!-- =================== -->
    <build>
        <sourceDirectory>src/java</sourceDirectory>
        <unitTestSourceDirectory>test/java</unitTestSourceDirectory>
        <!-- Unit test cases -->
        <unitTest>
            <includes>
                <include>org/**/Test_*.java</include>
            </includes>
            <excludes>
                <exclude>org/**/util/*.java</exclude>
                <exclude>org/**/Test_ClassRegistration.java</exclude>
                <exclude>org/**/Test_FSUID2.java</exclude>
                <exclude>org/**/Test_FetchInserted.java</exclude>
                <exclude>org/**/Test_GetObjectById2.java</exclude>
                <exclude>org/**/Test_NonExistent.java</exclude>
                <exclude>org/**/Test_EmpDeptAppIdInsert.java</exclude>
                <exclude>org/**/Test_EmpDeptAppIdUpdate.java</exclude>
                <exclude>org/**/Test_EmpDeptAppIdDelete.java</exclude>
            </excludes>
            <resources>
                <resource>
                    <directory>${basedir}/test/conf</directory>
                    <includes>
                        <include>PMF.properties</include>
                        <include>jndi.properties</include>
                        <include>commons-logging.properties</include>
                        <include>simplelog.properties</include>
                        <include>logging.properties</include>
                    </includes>
                </resource>
            </resources>
        </unitTest>
        <!-- J A R  R E S O U R C E S -->
        <!-- Resources that are packaged up inside the JAR file -->
        <resources>
            <resource>
                <directory>${basedir}/src/java</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

