<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.scytl.products.ov</groupId>
        <artifactId>maven-dependencies</artifactId>
        <version>1.3.2</version>
    </parent>

	<groupId>com.scytl.mixing</groupId>
	<artifactId>mixing</artifactId>
	<packaging>pom</packaging>
	<version>0.3.2</version>
	<name>Online Voting Mixing</name>
	<description>Bayer and Groth Mix-net</description>

    <scm>
        <connection>scm:git:ssh://git@scm.scytl.net:7999/comp/online-voting-mixing.git</connection>
        <developerConnection>scm:git:ssh://git@scm.scytl.net:7999/comp/online-voting-mixing.git
            </developerConnection>
        <url>https://scm.scytl.net/stash/projects/COMP/repos/online-voting-mixing/browse</url>
        <tag>HEAD</tag>
    </scm>

	<properties>
		<skip.jacoco>false</skip.jacoco>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<surfire.version>2.17</surfire.version>
		<javac.version>1.8</javac.version>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<cryptolib.version>2.1.5-4</cryptolib.version>
		<slf4j-api.version>1.7.10</slf4j-api.version>
		<logging.version>1.4.2</logging.version>
		<scytl-math.version>1.0.1</scytl-math.version>
		<bouncycastle.version>1.59</bouncycastle.version>
		<jackson.version>2.8.9</jackson.version>
		<spring.version>4.3.10.RELEASE</spring.version>
	</properties>

	<dependencyManagement>
		<dependencies>

			<!-- Logging -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j-api.version}</version>
			</dependency>
			<dependency>
				<groupId>com.scytl.products.oscore</groupId>
				<artifactId>logging-core</artifactId>
				<version>${logging.version}</version>
			</dependency>

			<!-- other dependencies -->
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>3.3.2</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>2.4</version>
			</dependency>
			<dependency>
				<groupId>commons-cli</groupId>
				<artifactId>commons-cli</artifactId>
				<version>1.2</version>
			</dependency>
			<dependency>
				<groupId>org.openjdk.jmh</groupId>
				<artifactId>jmh-core</artifactId>
				<version>1.6.2</version>
			</dependency>
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-jdk15on</artifactId>
				<version>${bouncycastle.version}</version>
			</dependency>
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpkix-jdk15on</artifactId>
				<version>${bouncycastle.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.bouncycastle</groupId>
						<artifactId>bcprov-jdk15on</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.googlecode.jcsv</groupId>
				<artifactId>jcsv</artifactId>
				<version>1.4.0</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-core</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-annotations</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.maven.surefire</groupId>
				<artifactId>surefire-junit47</artifactId>
				<version>2.18.1</version>
			</dependency>
			<dependency>
				<groupId>commons-configuration</groupId>
				<artifactId>commons-configuration</artifactId>
				<version>1.10</version>
			</dependency>
			<dependency>
				<groupId>com.scytl.math</groupId>
				<artifactId>scytl-math</artifactId>
				<version>${scytl-math.version}</version>
			</dependency>
            <dependency>
                <groupId>com.scytl.cryptolib</groupId>
                <artifactId>cryptolib-api-elgamal</artifactId>
                <version>${cryptolib.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>3.0.2</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>

			<!-- testing dependencies -->
			<dependency>
				<groupId>org.jmockit</groupId>
				<artifactId>jmockit</artifactId>
				<version>1.17</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.12</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>hamcrest-all</artifactId>
				<version>1.3</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.openjdk.jmh</groupId>
				<artifactId>jmh-generator-annprocess</artifactId>
				<version>1.6.2</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-core</artifactId>
				<version>2.7.5</version>
				<scope>test</scope>
			</dependency>

			<!-- spring dependencies -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-tx</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-test</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aop</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-core</artifactId>
				<version>${spring.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.batch</groupId>
				<artifactId>spring-batch-core</artifactId>
				<version>${spring.batch.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-aop</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-beans</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-core</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-context</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.springframework</groupId>
						<artifactId>spring-tx</artifactId>
					</exclusion>
				</exclusions>
			</dependency>

			<!-- CryptoLib dependencies -->
			<dependency>
				<artifactId>cryptolib-elgamal</artifactId>
				<groupId>com.scytl.cryptolib</groupId>
				<version>${cryptolib.version}</version>
			</dependency>
			<dependency>
				<artifactId>cryptolib-proofs</artifactId>
				<groupId>com.scytl.cryptolib</groupId>
				<version>${cryptolib.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<modules>
		<module>mixnet-commons</module>
		<module>mixnet-shuffler</module>
		<module>mixnet-prover</module>
		<module>mixnet-mixer</module>
		<module>mixnet-verifier</module>
		<module>mixnet-engine</module>
        <module>mixing-commons</module>
        <module>mixing-prover</module>
		<module>mixing-core</module>
		<module>mixnet-spring</module>
		<module>mixnet-tools</module>
	</modules>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-site-plugin</artifactId>
					<version>3.4</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-release-plugin</artifactId>
					<version>2.5</version>
					<configuration>
						<preparationGoals>clean replacer:replace verify</preparationGoals>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>2.17</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.18.1</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>2.2</version>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
            <plugin>
                <groupId>com.mycila.maven-license-plugin</groupId>
                <artifactId>maven-license-plugin</artifactId>
                <version>1.9.0</version>
                <configuration>
					<headerDefinitions>
					   <headerDefinition>licensePattern.xml</headerDefinition>
					</headerDefinitions>
					<mapping>
						<javadoc_style>JAVADOC_STYLE</javadoc_style>
					</mapping>
                    <header>${basedir}/LICENSE</header>
                    <includes>
                        <include>**/*.java</include>
                        <include>**/*.xml</include>
                        <include>**/*.properties</include>
                        <include>**/*.js</include>
                    </includes>
                    <excludes>
                        <exclude>**/.*/**</exclude>
                        <exclude>target/**</exclude>
                        <exclude>bower_components/**</exclude>
                        <exclude>build/**</exclude>
                        <exclude>dist/**</exclude>
                        <exclude>node_modules/**</exclude>
                        <exclude>release/**</exclude>
                    </excludes>
                    <properties>
                        <currentYear>2018</currentYear>
                    </properties>
                    <useDefaultExcludes>true</useDefaultExcludes>
                    <strictCheck>true</strictCheck>
                </configuration>
				<executions>
					<execution>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
            </plugin>
        </plugins>
	</build>

	<dependencies>
		<!-- Test dependencies -->
		<dependency>
			<groupId>org.jmockit</groupId>
			<artifactId>jmockit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>all</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<includes>
								<include>**/*.java</include>
							</includes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>ultraSlow</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<dependencies>
							<dependency>
								<groupId>org.apache.maven.surefire</groupId>
								<artifactId>surefire-junit47</artifactId>
								<version>2.18.1</version>
							</dependency>
						</dependencies>
						<configuration>
							<groups>com.scytl.products.ov.mixnet.commons.tests.categories.UltraSlowTest</groups>
							<includes>
								<include>**/*.java</include>
							</includes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>slow</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<dependencies>
							<dependency>
								<groupId>org.apache.maven.surefire</groupId>
								<artifactId>surefire-junit47</artifactId>
								<version>2.18.1</version>
							</dependency>
						</dependencies>
						<configuration>
							<groups>com.scytl.products.ov.mixnet.commons.tests.categories.SlowTest</groups>
							<includes>
								<include>**/*.java</include>
							</includes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<id>fast</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<dependencies>
							<dependency>
								<groupId>org.apache.maven.surefire</groupId>
								<artifactId>surefire-junit47</artifactId>
								<version>2.18.1</version>
							</dependency>
						</dependencies>

						<configuration>
							<excludedGroups>
								com.scytl.products.ov.mixnet.commons.tests.categories.SlowTest,
								com.scytl.products.ov.mixnet.commons.tests.categories.UltraSlowTest
							</excludedGroups>
							<includes>
								<include>**/*.java</include>
							</includes>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
