<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<artifactId>spring-data-jdbc</artifactId>
	<version>3.4.1</version>

	<name>Spring Data JDBC</name>
	<description>Spring Data module for JDBC repositories.</description>
	<url>https://projects.spring.io/spring-data-jdbc</url>

	<parent>
		<groupId>org.springframework.data</groupId>
		<artifactId>spring-data-relational-parent</artifactId>
		<version>3.4.1</version>
	</parent>

	<properties>
		<java-module-name>spring.data.jdbc</java-module-name>
		<project.root>${basedir}/..</project.root>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.testcontainers</groupId>
				<artifactId>testcontainers-bom</artifactId>
				<version>${testcontainers}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>

		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>spring-data-relational</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>spring-data-commons</artifactId>
			<version>${springdata.commons}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis-spring.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.liquibase</groupId>
			<artifactId>liquibase-core</artifactId>
			<version>${liquibase.version}</version>
			<optional>true</optional>
		</dependency>

		<!-- JDBC Drivers -->

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>${h2.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<version>${hsqldb.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql-connector-java.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>${postgresql.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<version>${mariadb-java-client.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.microsoft.sqlserver</groupId>
			<artifactId>mssql-jdbc</artifactId>
			<version>${mssql.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>com.ibm.db2</groupId>
			<artifactId>jcc</artifactId>
			<version>${db2.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc11</artifactId>
			<version>${oracle.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- Test dependencies -->

		<dependency>
			<groupId>org.awaitility</groupId>
			<artifactId>awaitility</artifactId>
			<version>${awaitility.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>${assertj}</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>net.bytebuddy</groupId>
					<artifactId>byte-buddy</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.jmolecules.integrations</groupId>
			<artifactId>jmolecules-spring</artifactId>
			<version>${jmolecules-integration}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.tngtech.archunit</groupId>
			<artifactId>archunit</artifactId>
			<version>${archunit.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- Testcontainers -->

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>mysql</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>jcl-over-slf4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>postgresql</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>mariadb</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>mssqlserver</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>db2</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>oracle-free</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>${hikari.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<executions>
					<execution>
						<id>default-test</id>
						<phase>integration-test</phase>
						<goals>
							<goal>integration-test</goal>
						</goals>
						<configuration>
							<systemPropertyVariables>
								<spring.profiles.active>hsql</spring.profiles.active>
							</systemPropertyVariables>
							<excludes>
								<exclude/>
							</excludes>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>postgres</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-failsafe-plugin</artifactId>
						<executions>
							<execution>
								<id>postgres-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes>
										<exclude/>
									</excludes>
									<systemPropertyVariables>
										<spring.profiles.active>postgres</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>all-dbs</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-failsafe-plugin</artifactId>
						<executions>
							<execution>
								<id>h2-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>h2</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-h2</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>mysql-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>mysql</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-mysql</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>postgres-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>postgres</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-postgres</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>mariadb-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>mariadb</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-mariadb</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>db2-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>db2</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-db2</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>oracle-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>oracle</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-oracle</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
							<execution>
								<id>mssql-test</id>
								<phase>integration-test</phase>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<includes>
										<include>**/*IntegrationTests.java</include>
									</includes>
									<excludes><exclude/></excludes>
									<systemPropertyVariables>
										<spring.profiles.active>mssql</spring.profiles.active>
									</systemPropertyVariables>
								</configuration>
							</execution>
							<execution>
								<id>failsafe-verify-mssql</id>
								<phase>integration-test</phase>
								<goals>
									<goal>verify</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

</project>
