<?xml version="1.0"?>
<!--
   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>
  
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <inceptionYear>2001</inceptionYear>
  <currentVersion>1.2.2-RC1</currentVersion>
  <name>Commons DBCP</name>
  <shortDescription>Commons Database Connection Pooling</shortDescription>
  <description>Commons Database Connection Pooling</description>
  <logo>/images/dbcp-logo-white.png</logo>
  
  <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>
  <package>org.apache.commons.${pom.artifactId.substring(8)}</package>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://jakarta.apache.org</url>
    <logo>http://jakarta.apache.org/images/jakarta-logo.gif</logo>
  </organization>

  <licenses>
	<license>
    	<name>The Apache Software License, Version 2.0</name>
    	<url>/LICENSE.txt</url>
    	<distribution>repo</distribution>
	</license>
  </licenses>
  
  <gumpRepositoryId>jakarta</gumpRepositoryId>
  <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
  <siteAddress>people.apache.org</siteAddress>
  <siteDirectory>/www/jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</siteDirectory>
  <distributionDirectory>/www/jakarta.apache.org/builds/jakarta-commons/${pom.artifactId.substring(8)}/</distributionDirectory>

  <repository>
   <connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>
    <url>http://svn.apache.org/repos/asf/jakarta/commons/proper/${pom.artifactId.substring(8)}/trunk</url>
  </repository>  
  
  <mailingLists>
    <mailingList>
      <name>Commons Dev List</name>
      <subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>commons-dev-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-dev/</archive>
    </mailingList>
    <mailingList>
      <name>Commons User List</name>
      <subscribe>commons-user-subscribe@jakarta.apache.org</subscribe>
      <unsubscribe>commons-user-unsubscribe@jakarta.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/</archive>
    </mailingList>
  </mailingLists>
  
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>DBCP_1_0</tag>
    </version>
    <version>
      <id>1.1</id>
      <name>1.1</name>
      <tag>DBCP_1_1</tag>
    </version>
    <version>
      <id>1.2</id>
      <name>1.2</name>
      <tag>DBCP_1_2</tag>
    </version>
    <version>
      <id>1.2.1</id>
      <name>1.2.1</name>
      <tag>DBCP_1_2_1</tag>
    </version>
    <version>
      <id>1.2.2-RC1</id>
      <name>1.2.2-RC1</name>
      <tag></tag>
    </version>
  </versions>

  <developers>
    <developer>
      <name>Morgan Delagrange</name>
      <id>morgand</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>Geir Magnusson</name>
      <id>geirm</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>Craig McClanahan</name>
      <id>craigmcc</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>John McNally</name>
      <id>jmcnally</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>Martin Poeschl</name>
      <id>mpoeschl</id>
      <email>mpoeschl@marmot.at</email>
      <organization>tucana.at</organization>
    </developer>
    <developer>
      <name>Rodney Waldhoff</name>
      <id>rwaldhoff</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>David Weinrich</name>
      <id>dweinr1</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>Dirk Verbeeck</name>
      <id>dirkv</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>Yoav Shapira</name>
      <id>yoavs</id>
      <email>yoavs@apache.org</email>
      <organization>Apache Software Foundation</organization>
    </developer>
    <developer>
      <name>Phil Steitz</name>
      <id>psteitz</id>
      <email></email>
      <organization></organization>
    </developer>
    <developer>
      <name>J&#x00f6;rg Schaible</name>
      <id>joehni</id>
      <email>joerg.schaible@gmx.de</email>
      <organization></organization>
      <timezone>+1</timezone>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Todd Carmichael</name>
      <email>toddc@concur.com</email>
    </contributor>
    <contributor>
      <name>Wayne Woodfield</name>
    </contributor>
  </contributors>
  
  <dependencies>
    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>1.3</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <properties>
        <scope>test</scope>
      </properties>
    </dependency>

    
    <!-- tomcat naming jars for jndi reference tests -->
    <dependency>
      <groupId>tomcat</groupId>
      <artifactId>naming-common</artifactId>
      <version>5.0.28</version>
      <properties>
        <scope>test</scope>
        <comment>Only required for jndi reference tests</comment>
      </properties>
    </dependency>
    
    <dependency>
      <groupId>tomcat</groupId>
      <artifactId>naming-java</artifactId>
      <version>5.0.28</version>
      <properties>
        <scope>test</scope>
        <comment>Only required for jndi reference tests</comment>
      </properties>
    </dependency>
    
    <!-- Dependency needed for generated ant build.  Uncomment before
         regenerating ant build
    <dependency>
      <groupId>xerces</groupId>
      <artifactId>xercesImpl</artifactId>
      <version>2.8.0</version>
      <properties>
        <scope>test</scope>
        <comment>Only required for jocl tests under ant</comment>
      </properties>
    </dependency>
    -->
    
    <!-- dragged in by tomcat-naming jars - only for jndi tests -->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
       <version>1.0.4</version>
       <url>http://jakarta.apache.org/commons/logging</url>
       <properties>
         <scope>test</scope>
         <comment>Only required for jndi reference tests</comment>
      </properties>
    </dependency>

    <!-- Maven Build Dependencies -->

    <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-artifact-plugin</artifactId>
      <version>1.5</version>
      <url>http://www.ibiblio.org/maven/maven/plugins/</url>
      <type>plugin</type>
      <properties>
       <scope>test</scope>
       <comment>
        &lt;strong&gt;Build Only&lt;/strong&gt; Generates distributions.
       </comment>
      </properties>
    </dependency>
    
    <dependency>
      <groupId>maven</groupId>
      <artifactId>maven-xdoc-plugin</artifactId>
      <version>1.9.2</version>
      <url>http://maven.apache.org/reference/plugins/xdoc/</url>
      <type>plugin</type>
      <properties>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt; - v1.9.2 (minimum)
              required for building the project web site.
          </comment>
      </properties>
    </dependency>
    
     
    <dependency>
      <groupId>maven-plugins</groupId>
      <artifactId>maven-cobertura-plugin</artifactId>
      <version>1.1.1</version>
      <url>http://maven-plugins.sourceforge.net/maven-cobertura-plugin/</url>
      <type>plugin</type>
      <properties>
       <scope>test</scope>
       <comment>
        &lt;strong&gt;Site Only&lt;/strong&gt; Generates test coverage reports.
       </comment>
      </properties>
    </dependency>
    
    <dependency>
       <groupId>maven-plugins</groupId>
        <artifactId>maven-findbugs-plugin</artifactId>
        <version>1.3</version>
        <type>plugin</type>
        <properties>
          <scope>test</scope>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt;
          </comment>
        </properties>
    </dependency>
    
    <dependency>
       <groupId>maven</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>1.9</version>
        <type>plugin</type>
        <properties>
          <scope>test</scope>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt;
          </comment>
        </properties>
    </dependency>
    
    <dependency>
       <groupId>maven</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.0.1</version>
        <type>plugin</type>
        <properties>
          <scope>test</scope>
          <comment>
              &lt;strong&gt;Site Only&lt;/strong&gt;
          </comment>
        </properties>
    </dependency>
    
  </dependencies>

  <build>
    <nagEmailAddress>commons-dev@jakarta.apache.org</nagEmailAddress>
    <sourceDirectory>src/java</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    <unitTest>
      <includes>
        <include>org/apache/commons/dbcp/TestAbandonedObjectPool.java</include>
        <include>org/apache/commons/jocl/TestJOCLContentHandler.java</include>
        <include>org/apache/commons/dbcp/TestDelegatingConnection.java</include>
        <include>org/apache/commons/dbcp/TestPoolableConnection.java</include>
        <include>org/apache/commons/dbcp/TestDelegatingPreparedStatement.java</include>
        <include>org/apache/commons/dbcp/TestDelegatingStatement.java</include>
        <include>org/apache/commons/dbcp/TestJOCLed.java</include>
        <include>org/apache/commons/dbcp/TestManual.java</include>

        <include>org/apache/commons/dbcp/TestBasicDataSourceFactory.java</include>
        <include>org/apache/commons/dbcp/TestBasicDataSource.java</include>
        <include>org/apache/commons/dbcp/TestAbandonedBasicDataSource.java</include>
        <include>org/apache/commons/dbcp/TestPStmtPoolingBasicDataSource.java</include>
        <include>org/apache/commons/dbcp/TestPoolingDataSource.java</include>
        <include>org/apache/commons/dbcp/TestJndi.java</include>
        
        <include>org/apache/commons/dbcp/datasources/TestFactory.java</include>
        <include>org/apache/commons/dbcp/datasources/TestPerUserPoolDataSource.java</include>
        <include>org/apache/commons/dbcp/datasources/TestSharedPoolDataSource.java</include>
      </includes>
      <resources>
        <resource>
          <directory>${basedir}/src/test</directory>
          <includes>
            <include>testpool.jocl</include>
          </includes>
        </resource>
      </resources>
    </unitTest>

    <resources>
      <resource>
        <directory>${basedir}/src/test</directory>
        <includes>
          <include>testpool.jocl</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
  </build>
  
  <reports>
    <report>maven-changes-plugin</report>
    <report>maven-javadoc-plugin</report>
    <!--
    <report>maven-jdepend-plugin</report>
    <report>maven-junit-report-plugin</report>
    <report>maven-jxr-plugin</report>
    -->
    <report>maven-license-plugin</report>
    
    <!-- Activity reports ****************
    <report>maven-changelog-plugin</report>
    <report>maven-developer-activity-plugin</report>
    <report>maven-file-activity-plugin</report>
    ************************************** -->
    
    <!-- Diagnostic reports ***************
    <report>maven-cobertura-plugin</report>
    <report>maven-findbugs-plugin</report>
    <report>maven-checkstyle-plugin</report> 
    <report>maven-pmd-plugin</report>
    -->
     
  </reports>
  
</project>
