<?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.5.1</version>
	</parent>
	<artifactId>empire-db</artifactId>
	<packaging>jar</packaging>
	<name>Apache Empire-db Core</name>
	<dependencies>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<!-- TEST -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.xerial</groupId>
			<artifactId>sqlite-jdbc</artifactId>
			<version>3.7.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.hsqldb</groupId>
		    <artifactId>hsqldb</artifactId>
		    <scope>test</scope>
		</dependency> 
		<dependency>
		    <groupId>com.h2database</groupId>
		    <artifactId>h2</artifactId>
		    <scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.apache.derby</groupId>
		    <artifactId>derby</artifactId>
		    <scope>test</scope>
		</dependency>
		<!-- <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.14</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>net.sourceforge.jtds</groupId>
		    <artifactId>jtds</artifactId>
		    <version>1.2.4</version>
		    <scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>postgresql</groupId>
		    <artifactId>postgresql</artifactId>
		    <version>9.1-901.jdbc4</version>
		    <scope>test</scope>
		</dependency>  -->
		<dependency>
		    <groupId>commons-io</groupId>
		    <artifactId>commons-io</artifactId>
		    <version>1.4</version>
		    <scope>test</scope>
		</dependency>

	</dependencies>
	
	<build>
		<pluginManagement>
			<plugins>
				<!-- Eclipse: void message "maven-remote-resources-plugin (goal "process") is ignored by m2e." -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
						  <pluginExecutions>
						    <pluginExecution>
						      <pluginExecutionFilter>
								<groupId>org.apache.maven.plugins</groupId>
								<artifactId>maven-remote-resources-plugin</artifactId>
								<versionRange>[1.0,)</versionRange>
						        <goals>
						          <goal>process</goal>
						        </goals>
						      </pluginExecutionFilter>
						      <action>
						        <ignore />
						      </action>
						    </pluginExecution>
						  </pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	
</project>
