<?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.4.5</version>
	</parent>
	<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.7</version>
		</dependency>

		<!-- use log4j for logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</dependency>

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

		<!-- mysql -->
		<!-- <dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>5.1.1</version>
		</dependency>-->
		
		<!-- ojdbc   
		<dependency>
		    <groupId>com.oracle</groupId>
			<artifactId>ojdbc5</artifactId>
			<version>11.2.0.3</version>
		</dependency>
		-->

		<!-- msssql 
		<dependency>
		    <groupId>com.microsoft</groupId>
		    <artifactId>sqljdbc</artifactId>
		    <version>1.0</version>
		</dependency>
		--> 
		
	</dependencies>
	
	<build>
	<resources>
		<resource>
			<directory>src/main/resources/templates</directory>
			<filtering>true</filtering>
		</resource>
		</resources>
	</build>
</project>