<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<artifactId>empire-db-parent</artifactId>
		<groupId>org.apache.empire-db</groupId>
		<version>2.0.6-incubating</version>
	</parent>
	<groupId>org.apache.empire-db</groupId>
	<artifactId>empire-db-codegen</artifactId>
	<packaging>jar</packaging>
	<name>Apache Empire-db Code Generator</name>
	<dependencies>

		<!--  Code dependencies -->
		<dependency>
		    <groupId>org.apache.empire-db</groupId>
		    <artifactId>empire-db</artifactId>
		</dependency>
		 
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.6.3</version>
		</dependency>

		<!--  Databases -->
		<!-- hsql -->
		<dependency>
		    <groupId>hsqldb</groupId>
		    <artifactId>hsqldb</artifactId>
		    <!-- <scope>runtime</scope> -->
		</dependency>

		<!-- mysql -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>5.1.1</version>
		</dependency>
		
		
		<!-- ojdbc 
		<dependency>
		    <groupId>ojdbc</groupId>
		    <artifactId>ojdbc</artifactId>
		    <version>14</version>
		</dependency>
		-->

		<!-- msssql 
		<dependency>
		    <groupId>microsoft</groupId>
		    <artifactId>sqljdbc</artifactId>
		    <version>1.0</version>
		</dependency>
		-->
		
	</dependencies>
</project>