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

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

<project>
    <pomVersion>3</pomVersion>
    <extend>../project.xml</extend>
    <!-- ============== -->
    <!-- Identification -->
    <!-- ============== -->
    <name>JDO2 Implementation (Model)</name>
    <groupId>org.apache.jdo</groupId>
    <artifactId>jdo2-model</artifactId>
    <currentVersion>2.1</currentVersion>
    <package>org.apache.jdo</package>
    <shortDescription>Java Data Objects 2.0 (JDO) Model</shortDescription>
    <description>The Java Data Objects 2.0 (JDO) API is a standard interface-based 
Java model abstraction of persistence, developed as Java Specification 
Request JSR 243 under the auspices of the Java Community Process.</description>
    <!-- ============ -->
    <!-- Dependencies -->
    <!-- ============ -->
    <dependencies>
        <dependency>
            <groupId>org.apache.jdo</groupId>
            <artifactId>jdo2-util</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1</version>
        </dependency>
    </dependencies>
    <!-- =================== -->
    <!-- Build Specification -->
    <!-- =================== -->
    <build>
        <sourceDirectory>src/java</sourceDirectory>
        <!-- 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}/..</directory>
                <targetPath>META-INF</targetPath>
                <includes>
                    <include>NOTICE.txt</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/java</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

