<?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>
    <!-- ============== -->
    <!-- Identification -->
    <!-- ============== -->
    <name>Java Data Objects (JDO)</name>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org</url>
    </organization>
    <inceptionYear>2005</inceptionYear>
    <shortDescription>Java Data Objects (JDO)</shortDescription>
    <description>The Java Data Objects (JDO) API is a standard interface-based 
Java model abstraction of persistence, developed as Java Specification 
Requests (JSR 12 and 243) under the auspices of the Java Community Process.
    </description>
    <url>http://db.apache.org/jdo</url>
    <repository>
        <connection>scm:svn:http://svn.apache.org/repos/asf/db/jdo/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/db/jdo/trunk</developerConnection>
        <url>http://svn.apache.org/viewcvs.cgi/</url>
    </repository>

    <build>
        <defaultGoal>help</defaultGoal>
    </build>
    <mailingLists>
        <mailingList>
            <name>JDO User List</name>
            <subscribe>jdo-user-subscribe@db.apache.org</subscribe>
            <unsubscribe>jdo-user-unsubscribe@db.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/db-jdo-user/</archive>
        </mailingList>
        <mailingList>
            <name>JDO Developer List</name>
            <subscribe>jdo-dev-subscribe@db.apache.org</subscribe>
            <unsubscribe>jdo-dev-unsubscribe@db.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/db-jdo-dev/</archive>
        </mailingList>
        <mailingList>
            <name>JDO Commits List</name>
            <subscribe>jdo-commits-subscribe@db.apache.org</subscribe>
            <unsubscribe>jdo-commits-unsubscribe@db.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/db-jdo-commits/</archive>
        </mailingList>
    </mailingLists>
    <!-- ========== -->
    <!-- Developers -->
    <!-- ========== -->
    <developers>
        <developer>
            <name>Craig Russell</name>
            <id>clr</id>
            <email>Craig.Russell@Sun.COM</email>
            <timezone>-8</timezone>
            <organization>Sun Microsystems, Inc.</organization>
        </developer>
        <developer>
            <name>Michael Bouschen</name>
            <id>mbo</id>
            <email>mbo.tech@spree.de</email>
            <organization>Tech@Spree Engineering GmbH</organization>
            <timezone>1</timezone>
        </developer>
        <developer>
            <name>Michael Watzek</name>
            <id>brazil</id>
            <email>mwa.tech@spree.de</email>
            <organization>Tech@Spree Engineering GmbH</organization>
            <timezone>1</timezone>
        </developer>
        <developer>
            <name>Michelle Caisse</name>
            <id>mcaisse</id>
            <email>Michelle.Caisse@Sun.COM</email>
            <organization>Sun Microsystems, Inc.</organization>
            <timezone>-8</timezone>
        </developer>
        <developer>
            <name>Matthew Adams</name>
            <id>madams</id>
            <email>matthew@matthewadams.me</email>
            <timezone>-8</timezone>
            <organization>Apache.org</organization>
        </developer>
        <developer>
            <name>Martin Zaun</name>
            <id>mzaun</id>
            <email>martin.zaun@Sun.COM</email>
            <timezone>-8</timezone>
            <organization>Sun Microsystems, Inc.</organization>
        </developer>
        <developer>
            <name>Erik Bengtson</name>
            <id>ebengtson</id>
            <email>erik@jpox.org</email>
            <timezone>1</timezone>
            <organization>JPOX</organization>
        </developer>
        <developer>
            <name>Geir Magnusson, Jr.</name>
            <id>geirm</id>
            <email>geirm@apache.org</email>
            <timezone>-8</timezone>
            <organization>Apache.org</organization>
        </developer>
        <developer>
            <name>Brian McCallister</name>
            <id>brianm</id>
            <email>brianm@apache.org</email>
            <timezone>-8</timezone>
            <organization>Apache.org</organization>
        </developer>
    </developers>
</project>

