<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>
	<groupId>com.simplyti.cloud</groupId>
	<artifactId>simple-server</artifactId>
	<version>0.0.4-rc1</version>
	<packaging>pom</packaging>

	<name>Simple server</name>
	<description>Light and high performance non-blocking server</description>
	<url>https://github.com/simplyti/simple-server</url>

	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>
	<scm>
		<url>https://github.com/simplyti/simple-server</url>
		<connection>scm:git:git://github.com/simplyti/simple-server.git</connection>
		<developerConnection>scm:git:git@github.com:username/simple-server.git</developerConnection>
	</scm>

	<developers>
		<developer>
			<id>ptaboas</id>
			<name>Pablo Taboas</name>
			<email>p.taboas@simplyti.com</email>
		</developer>
	</developers>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>

		<maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
		<maven-surefire-plugin.version>3.0.0-M3</maven-surefire-plugin.version>
		<maven-failsafe-plugin.version>3.0.0-M3</maven-failsafe-plugin.version>
		<maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
		<jacoco-maven-plugin.version>0.8.3</jacoco-maven-plugin.version>
		<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
		<exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
		<groovy-maven-plugin.version>2.0</groovy-maven-plugin.version>
		<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>

		<!-- Lombok -->
		<lombok.version>1.18.8</lombok.version>

		<!-- IoC -->
		<inject.version>1</inject.version>
		<guice.version>4.2.2</guice.version>
		<dagger.version>2.24</dagger.version>

		<!-- Commons -->
		<vavr.version>0.10.2</vavr.version>
		<classmate.version>1.5.0</classmate.version>
		<guava.version>28.0-jre</guava.version>
		<javax.annotation.version>1.3.2</javax.annotation.version>
		<javax.activation.version>1.1.1</javax.activation.version>
		<jaxb.version>2.3.1</jaxb.version>

		<!-- Networking -->
		<netty.version>4.1.41.Final</netty.version>

		<!-- JAX-RS -->
		<jax-rs.version>2.1.1</jax-rs.version>

		<!-- Json -->
		<jsoniter.version>0.9.23</jsoniter.version>
		<dsljson.version>1.9.3</dsljson.version>
		<jackson.json>2.9.9</jackson.json>
		
		<!-- JWT -->
		<jjwt.version>0.10.7</jjwt.version>

		<!-- Test -->
		<junit.version>4.12</junit.version>
		<truth.version>1.0</truth.version>
		<hamcrest.version>1.3</hamcrest.version>
		<awaitility.version>3.1.6</awaitility.version>
		<commons-io.version>2.6</commons-io.version>
		<log4j.version>2.12.1</log4j.version>

		<!-- Integration Test -->
		<cucumber.version>2.3.1</cucumber.version>
	</properties>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven-compiler-plugin.version}</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>${maven-surefire-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-failsafe-plugin</artifactId>
					<version>${maven-failsafe-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>${maven-enforcer-plugin.version}</version>
					<configuration>
						<rules>
							<dependencyConvergence />
						</rules>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-antrun-plugin</artifactId>
					<version>${maven-antrun-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>exec-maven-plugin</artifactId>
					<version>${exec-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.gmaven</groupId>
					<artifactId>groovy-maven-plugin</artifactId>
					<version>${groovy-maven-plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.sonatype.plugins</groupId>
					<artifactId>nexus-staging-maven-plugin</artifactId>
					<version>${nexus-staging-maven-plugin.version}</version>
					<extensions>true</extensions>
					<configuration>
						<serverId>ossrh</serverId>
						<nexusUrl>https://oss.sonatype.org</nexusUrl>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<executions>
					<execution>
						<id>enforce</id>
						<goals>
							<goal>enforce</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>


	<dependencyManagement>
		<dependencies>
			<!-- Lombok -->
			<dependency>
				<groupId>org.projectlombok</groupId>
				<artifactId>lombok</artifactId>
				<version>${lombok.version}</version>
				<scope>provided</scope>
			</dependency>

			<!-- IoC -->
			<dependency>
				<groupId>javax.inject</groupId>
				<artifactId>javax.inject</artifactId>
				<version>${inject.version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.inject</groupId>
				<artifactId>guice</artifactId>
				<version>${guice.version}</version>
				<exclusions>
					<exclusion>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>com.google.dagger</groupId>
				<artifactId>dagger</artifactId>
				<version>${dagger.version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.dagger</groupId>
				<artifactId>dagger-compiler</artifactId>
				<version>${dagger.version}</version>
			</dependency>

			<!-- Networking -->
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-transport</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-common</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-buffer</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-transport-native-epoll</artifactId>
				<version>${netty.version}</version>
				<classifier>linux-x86_64</classifier>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-transport-native-kqueue</artifactId>
				<version>${netty.version}</version>
				<classifier>osx-x86_64</classifier>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-handler</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-codec-http</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-codec-http2</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-handler-proxy</artifactId>
				<version>${netty.version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-resolver-dns</artifactId>
			    <version>${netty.version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-codec-smtp</artifactId>
			    <version>${netty.version}</version>
			</dependency>


			<!-- Commons -->
			<dependency>
				<groupId>io.vavr</groupId>
				<artifactId>vavr</artifactId>
				<version>${vavr.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml</groupId>
				<artifactId>classmate</artifactId>
				<version>${classmate.version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.annotation</groupId>
				<artifactId>javax.annotation-api</artifactId>
				<version>${javax.annotation.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.activation</groupId>
				<artifactId>activation</artifactId>
				<version>${javax.activation.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.xml.bind</groupId>
				<artifactId>jaxb-api</artifactId>
				<version>${jaxb.version}</version>
			</dependency>


			<!-- JAX-RS -->
			<dependency>
				<groupId>javax.ws.rs</groupId>
				<artifactId>javax.ws.rs-api</artifactId>
				<version>${jax-rs.version}</version>
			</dependency>

			<!-- Json -->
			<dependency>
				<groupId>com.jsoniter</groupId>
				<artifactId>jsoniter</artifactId>
				<version>${jsoniter.version}</version>
			</dependency>
			<dependency>
			    <groupId>com.dslplatform</groupId>
			    <artifactId>dsl-json-java8</artifactId>
			    <version>${dsljson.version}</version>
			</dependency>
			<dependency>
			    <groupId>com.fasterxml.jackson.core</groupId>
			    <artifactId>jackson-databind</artifactId>
			    <version>${jackson.json}</version>
			</dependency>

			<!-- JWT -->
			<dependency>
				<groupId>io.jsonwebtoken</groupId>
				<artifactId>jjwt-api</artifactId>
				<version>${jjwt.version}</version>
			</dependency>
			<dependency>
				<groupId>io.jsonwebtoken</groupId>
				<artifactId>jjwt-impl</artifactId>
				<version>${jjwt.version}</version>
			</dependency>

			<!-- Test -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.google.truth</groupId>
				<artifactId>truth</artifactId>
				<version>${truth.version}</version>
				<scope>test</scope>
				<exclusions>
					<exclusion>
						<groupId>com.google.guava</groupId>
						<artifactId>guava</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>hamcrest-library</artifactId>
				<version>${hamcrest.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.awaitility</groupId>
    			<artifactId>awaitility</artifactId>
				<version>${awaitility.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-api</artifactId>
				<version>${log4j.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-core</artifactId>
				<version>${log4j.version}</version>
				<scope>test</scope>
			</dependency>

			<!-- Integration Tests -->
			<dependency>
				<groupId>io.cucumber</groupId>
				<artifactId>cucumber-junit</artifactId>
				<version>${cucumber.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>io.cucumber</groupId>
				<artifactId>cucumber-guice</artifactId>
				<version>${cucumber.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io.version}</version>
				<scope>test</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>


	<modules>
		<module>commons</module>
		<module>commons-netty</module>
		<module>serializer-json</module>
		<module>serializer-dsljson</module>
		<module>serializer-dsljson-guice</module>
		<module>serializer-dsljson-dagger</module>
		<module>serializer-jsoniter</module>
		<module>serializer-jackson</module>
		<module>serializer-jackson-guice</module>
		<module>core</module>
		<module>di-dagger</module>
		<module>di-guice</module>
		<module>aws-lambda</module>
		<module>auth-oidc</module>
		<module>auth-oidc-guice</module>
		<module>clients</module>
		<module>clients-http</module>
		<module>clients-k8s</module>
		<module>gateway</module>
		<module>gateway-guice</module>
		<module>gateway-dagger</module>
		<module>discovery-k8s</module>
		<module>discovery-k8s-guice</module>
		<module>acceptance</module>
	</modules>

	<distributionManagement>
		<repository>
			<id>ossrh</id>
			<name>Nexus Release Repository</name>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
		</repository>
		<snapshotRepository>
			<id>ossrh</id>
			<name>Sonatype Nexus Snapshots</name>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
	</distributionManagement>

</project>