<?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>
  <extend>${basedir}/../../project.xml</extend>
  <pomVersion>3</pomVersion>
  <name>Turbine Torque Impl</name>
  <id>turbine-torque-impl</id>
  <currentVersion>2.4-dev</currentVersion>
  
  <package>org.apache.turbine</package>

 
  <shortDescription>Torque Generated Code for Turbine</shortDescription>
  <description>
  	Torque provides autogeneration of objects and sql based on an xml schema document.   This
    project contains the generated code required by Turbine for Torque implementations of the
    Schedule service and the Security Service.
  </description>
  

  <repository>
    <connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-turbine-2/extensions/torque</connection>
    <developerConnection>scm:cvs:ext:${maven.username}@cvs.apache.org:/home/cvs:jakarta-turbine-2/extensions/torque</developerConnection>
    <url>http://cvs.apache.org/viewcvs/jakarta-turbine-2.4/extensions/torque</url>
  </repository>


  <dependencies>
    <dependency>
      <id>turbine</id>
      <version>2.4-dev</version>
      <url>http://jakarta.apache.org/turbine</url>
    </dependency>
    <dependency>
      <id>jdbc</id>
      <version>2.0</version>
      <url>http://java.sun.com/products/jdbc/</url>
    </dependency>
    <dependency>
      <id>jndi</id>
      <version>1.2.1</version>
      <url>http://java.sun.com/products/jndi/</url>
    </dependency>
    <dependency>
      <id>torque</id>
      <version>3.1</version>
      <url>http://db.apache.org/torque/</url>
    </dependency>
    <dependency>
      <id>village</id>
      <version>2.0-dev-20030825</version>
      <url>http://share.whichever.com/index.php?SCREEN=village</url>
    </dependency>
    
    <!-- Needed to compile OM code -->
	<dependency> 
      <groupId>torque</groupId> 
      <artifactId>maven-torque-plugin</artifactId> 
      <version>3.2-20031017</version> 
      <url>http://maven-plugins.sourceforge.net/maven-tasks-plugin/</url> 
      <type>plugin</type>
    </dependency>     
  </dependencies>

  <build>
    <sourceDirectory>target/src</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
    <unitTest>
      <includes>
        <include>**/*Test.java</include>
      </includes>
    </unitTest>
    <integrationUnitTestSourceDirectory/>
    <integrationUnitTest/>
    <aspectSourceDirectory/>
  </build>


</project>
