<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.baeldung</groupId>
	<artifactId>spring-thymeleaf</artifactId>
	<version>0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<properties>
		<java-version>1.8</java-version>
		<!-- spring -->
		<org.springframework-version>4.3.4.RELEASE</org.springframework-version>
		<springframework-security.version>4.2.0.RELEASE</springframework-security.version>
		<javax.servlet-version>3.1.0</javax.servlet-version>
		<!-- logging -->
		<org.slf4j.version>1.7.21</org.slf4j.version>
		<logback.version>1.1.7</logback.version>
		<!-- thymeleaf -->
		<org.thymeleaf-version>3.0.3.RELEASE</org.thymeleaf-version>
		<org.thymeleaf.extras-version>3.0.0.RELEASE</org.thymeleaf.extras-version>
		<thymeleaf-layout-dialect.version>2.1.2</thymeleaf-layout-dialect.version>
		<!-- validation -->
		<javax.validation-version>1.1.0.Final</javax.validation-version>
		<hibernate-validator.version>5.3.3.Final</hibernate-validator.version>
		<org.hibernate-version>5.2.5.Final</org.hibernate-version>

		<junit.version>4.12</junit.version>
		<!-- Maven plugins -->
		<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
		<maven-war-plugin.version>2.6</maven-war-plugin.version>
		<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
		<cargo-maven2-plugin.version>1.6.1</cargo-maven2-plugin.version>
		<tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
	</properties>

	<dependencies>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<!-- Spring Security -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
			<version>${springframework-security.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
			<version>${springframework-security.version}</version>
		</dependency>
		<!-- Thymeleaf -->
		<dependency>
			<groupId>org.thymeleaf</groupId>
			<artifactId>thymeleaf</artifactId>
			<version>${org.thymeleaf-version}</version>
		</dependency>
		<dependency>
			<groupId>org.thymeleaf</groupId>
			<artifactId>thymeleaf-spring4</artifactId>
			<version>${org.thymeleaf-version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect -->
		<dependency>
			<groupId>nz.net.ultraq.thymeleaf</groupId>
			<artifactId>thymeleaf-layout-dialect</artifactId>
			<version>${thymeleaf-layout-dialect.version}</version>
		</dependency>
		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-java8time</artifactId>
			<version>${org.thymeleaf.extras-version}</version>
		</dependency>
		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j.version}</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback.version}</version>
			<!-- <scope>runtime</scope> -->
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j.version}</version>
			<!-- <scope>runtime</scope> --> <!-- some spring dependencies need to compile against jcl -->
		</dependency>
		<dependency> <!-- needed to bridge to slf4j for projects that use the log4j APIs directly -->
			<groupId>org.slf4j</groupId>
			<artifactId>log4j-over-slf4j</artifactId>
			<version>${org.slf4j.version}</version>
		</dependency>
		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>${javax.servlet-version}</version>
			<scope>provided</scope>
		</dependency>
		<!-- Validation -->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>${javax.validation-version}</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>${hibernate-validator.version}</version>
		</dependency>
		<!-- test scoped -->

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

		<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-test -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<version>${springframework-security.version}</version>
			<scope>test</scope>
		</dependency>

		<!-- https://mvnrepository.com/artifact/junit/junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>
		<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-war-plugin</artifactId>
				<version>${maven-war-plugin.version}</version>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven-surefire-plugin.version}</version>
				<configuration>
					<excludes>
						<exclude>**/*IntegrationTest.java</exclude>
						<exclude>**/*LiveTest.java</exclude>
					</excludes>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.codehaus.cargo</groupId>
				<artifactId>cargo-maven2-plugin</artifactId>
				<version>${cargo-maven2-plugin.version}</version>
				<configuration>
					<wait>true</wait>
					<container>
						<containerId>jetty8x</containerId>
						<type>embedded</type>
						<systemProperties>
						</systemProperties>
					</container>
					<configuration>
						<properties>
							<cargo.servlet.port>8082</cargo.servlet.port>
						</properties>
					</configuration>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>${tomcat7-maven-plugin.version}</version>
				<executions>
					<execution>
						<id>tomcat-run</id>
						<goals>
							<goal>exec-war-only</goal>
						</goals>
						<phase>package</phase>
						<configuration>
							<path>/</path>
							<enableNaming>false</enableNaming>
							<finalName>webapp.jar</finalName>
							<charset>utf-8</charset>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>integration</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<executions>
							<execution>
								<phase>integration-test</phase>
								<goals>
									<goal>test</goal>
								</goals>
								<configuration>
									<excludes>
										<exclude>**/*LiveTest.java</exclude>
									</excludes>
									<includes>
										<include>**/*IntegrationTest.java</include>
									</includes>
								</configuration>
							</execution>
						</executions>
						<configuration>
							<systemPropertyVariables>
								<test.mime>json</test.mime>
							</systemPropertyVariables>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>