<?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>

	<parent>
		<groupId>org.springframework.data.build</groupId>
		<artifactId>spring-data-parent</artifactId>
		<version>2.7.19-SNAPSHOT</version>
	</parent>

	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-cassandra-parent</artifactId>
	<version>3.4.19-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>Spring Data for Apache Cassandra</name>
	<description>Spring Data for Apache Cassandra</description>
	<url>https://projects.spring.io/spring-data-cassandra/</url>

	<developers>
		<developer>
			<id>madams</id>
			<name>Matthew T. Adams</name>
			<email>matthew dot adams at scispike.com</email>
			<organization>SciSpike Inc.</organization>
			<organizationUrl>http://www.scispike.com</organizationUrl>
			<roles>
				<role>Project Lead</role>
				<role>Developer</role>
			</roles>
			<timezone>-6</timezone>
		</developer>
		<developer>
			<id>dwebb</id>
			<name>David Webb</name>
			<email>dwebb at prowaveconsulting.com</email>
			<organization>Prowave Consulting Inc.</organization>
			<organizationUrl>http://www.prowaveconsulting.com</organizationUrl>
			<roles>
				<role>Project Lead</role>
				<role>Developer</role>
			</roles>
			<timezone>-5</timezone>
		</developer>
		<developer>
			<id>ashvid</id>
			<name>Alex Shvid</name>
			<email>a at shvid.com</email>
			<roles>
				<role>Project Lead</role>
				<role>Developer</role>
			</roles>
			<timezone>-8</timezone>
		</developer>
		<developer>
			<id>jblum</id>
			<name>John Blum</name>
			<email>jblum at pivotal.io</email>
			<organization>Pivotal</organization>
			<organizationUrl>https://www.pivotal.io</organizationUrl>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>-8</timezone>
		</developer>
		<developer>
			<id>mpaluch</id>
			<name>Mark Paluch</name>
			<email>mpaluch at pivotal.io</email>
			<organization>Pivotal</organization>
			<organizationUrl>https://www.pivotal.io</organizationUrl>
			<roles>
				<role>Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
	</developers>

	<modules>
		<module>spring-data-cassandra</module>
		<module>spring-data-cassandra-distribution</module>
	</modules>

	<properties>
		<build.cassandra.host>localhost</build.cassandra.host>
		<build.cassandra.mode>embedded</build.cassandra.mode>
		<build.cassandra.native_transport_port>19042
		</build.cassandra.native_transport_port>
		<build.cassandra.rpc_port>19160</build.cassandra.rpc_port>
		<build.cassandra.ssl_storage_port>17001</build.cassandra.ssl_storage_port>
		<build.cassandra.storage_port>17000</build.cassandra.storage_port>
		<cassandra.version>3.11.12</cassandra.version>
		<cassandra-driver.version>4.14.1</cassandra-driver.version>
		<dist.id>spring-data-cassandra</dist.id>
		<el.version>1.0</el.version>
		<!-- NOTE: com.carrotsearch:hppc dependency version set to same version as Apache Cassandra 3.11.5 -->
		<hppc.version>0.5.4</hppc.version>
		<multithreadedtc.version>1.01</multithreadedtc.version>
		<project.type>multi</project.type>
		<springdata.commons>2.7.19-SNAPSHOT</springdata.commons>
	</properties>

	<dependencyManagement>
		<dependencies>

			<!-- Cassandra Driver -->
			<dependency>
				<groupId>com.datastax.oss</groupId>
				<artifactId>java-driver-bom</artifactId>
				<version>${cassandra-driver.version}</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>

			<!-- CDI -->
			<dependency>
				<groupId>javax.enterprise</groupId>
				<artifactId>cdi-api</artifactId>
				<version>${cdi}</version>
				<scope>provided</scope>
				<optional>true</optional>
			</dependency>

			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>${jodatime}</version>
				<optional>true</optional>
			</dependency>

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

			<!-- Test Dependencies -->
			<dependency>
				<groupId>org.apache.cassandra</groupId>
				<artifactId>cassandra-all</artifactId>
				<version>${cassandra.version}</version>
				<scope>test</scope>
				<exclusions>
					<exclusion>
						<groupId>ch.qos.logback</groupId>
						<artifactId>logback-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-all</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<dependency>
				<groupId>org.apache.cassandra</groupId>
				<artifactId>cassandra-thrift</artifactId>
				<version>${cassandra.version}</version>
				<scope>test</scope>
				<exclusions>
					<exclusion>
						<groupId>ch.qos.logback</groupId>
						<artifactId>logback-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>io.netty</groupId>
						<artifactId>netty-all</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<dependency>
				<groupId>org.assertj</groupId>
				<artifactId>assertj-core</artifactId>
				<version>${assertj}</version>
				<scope>test</scope>
			</dependency>

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

			<dependency>
				<groupId>org.xerial.snappy</groupId>
				<artifactId>snappy-java</artifactId>
				<version>1.1.4</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>com.carrotsearch</groupId>
				<artifactId>hppc</artifactId>
				<version>${hppc.version}</version>
				<scope>test</scope>
			</dependency>

			<dependency>
				<groupId>edu.umd.cs.mtc</groupId>
				<artifactId>multithreadedtc</artifactId>
				<version>${multithreadedtc.version}</version>
				<scope>test</scope>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.bitstrings.maven.plugins</groupId>
				<artifactId>dependencypath-maven-plugin</artifactId>
				<version>1.1.1</version>
				<executions>
					<execution>
						<id>set-all</id>
						<goals>
							<goal>set</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<parallel>methods</parallel>
					<threadCount>10</threadCount>
					<useFile>false</useFile>
					<includes>
						<include>**/test/unit/**/*</include>
						<include>**/*UnitTests</include>
					</includes>
					<excludes>
						<exclude>**/test/integration/**/*.java</exclude>
						<exclude>**/**IntegrationTests</exclude>
						<exclude>**/test/performance/**/*</exclude>
					</excludes>
					<systemPropertyVariables>
						<java.util.logging.config.file>
							src/test/resources/logging.properties
						</java.util.logging.config.file>
					</systemPropertyVariables>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<configuration>
					<forkCount>1</forkCount>
					<argLine>-Xms1g -Xmx1500m -Xss256k</argLine>
					<reuseForks>true</reuseForks>
					<useFile>false</useFile>
					<includes>
						<include>**/test/integration/**/*</include>
						<include>**/*IntegrationTests</include>
					</includes>
					<excludes>
						<exclude>**/test/unit/**/*</exclude>
						<exclude>**/*UnitTests</exclude>
						<exclude>**/test/performance/**/*</exclude>
					</excludes>
					<systemPropertyVariables>
						<java.util.logging.config.file>
							src/test/resources/logging.properties
						</java.util.logging.config.file>
					</systemPropertyVariables>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>integration-test</goal>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>

		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>**/*</include>
				</includes>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>src/test/resources</directory>
				<filtering>false</filtering>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</testResource>
			<testResource>
				<directory>src/test/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>**/*</include>
				</includes>
				<excludes>
					<exclude>**/*.xml</exclude>
				</excludes>
			</testResource>
		</testResources>
	</build>

	<profiles>
		<profile>
			<id>embedded-cassandra</id>

			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>

			<properties>
				<build.cassandra.mode>embedded</build.cassandra.mode>
			</properties>

			<build>
				<plugins>
					<plugin>
						<!-- Random port generation requires embedded-cassandra.yaml and cassandra-connection.properties
						in both modules -->
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>build-helper-maven-plugin</artifactId>
						<version>1.8</version>
						<executions>
							<execution>
								<id>reserve-network-port</id>
								<goals>
									<goal>reserve-network-port</goal>
								</goals>
								<phase>generate-test-resources</phase>
								<configuration>
									<portNames>
										<portName>build.cassandra.native_transport_port
										</portName>
										<portName>build.cassandra.rpc_port</portName>
										<portName>build.cassandra.storage_port</portName>
										<portName>build.cassandra.ssl_storage_port
										</portName>
									</portNames>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>external-cassandra</id>

			<properties>
				<build.cassandra.mode>external</build.cassandra.mode>
				<build.cassandra.native_transport_port>9042
				</build.cassandra.native_transport_port>
				<build.cassandra.rpc_port>9160</build.cassandra.rpc_port>
				<build.cassandra.storage_port>7000</build.cassandra.storage_port>
				<build.cassandra.ssl_storage_port>7001</build.cassandra.ssl_storage_port>
			</properties>
		</profile>
		<profile>
			<id>testcontainers-cassandra</id>

			<properties>
				<build.cassandra.mode>testcontainers</build.cassandra.mode>
				<build.cassandra.native_transport_port>0
				</build.cassandra.native_transport_port>
				<build.cassandra.rpc_port>0</build.cassandra.rpc_port>
				<build.cassandra.storage_port>0</build.cassandra.storage_port>
				<build.cassandra.ssl_storage_port>0</build.cassandra.ssl_storage_port>
			</properties>
		</profile>
	</profiles>

	<repositories>
		<repository>
			<id>spring-snapshot</id>
			<url>https://repo.spring.io/snapshot</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
			<releases>
				<enabled>false</enabled>
			</releases>
		</repository>
		<repository>
			<id>spring-milestone</id>
			<url>https://repo.spring.io/milestone</url>
		</repository>
	</repositories>

</project>
