<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>es.uvigo.esei.xcs</groupId>
	<artifactId>sample</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>Sample</name>

	<distributionManagement>
		<repository>
			<id>deployment</id>
			<name>Internal Releases</name>
			<url>http://sing.ei.uvigo.es/dt/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>deployment</id>
			<name>Internal SNAPSHOT Releases</name>
			<url>http://sing.ei.uvigo.es/dt/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

	<modules>
		<module>domain</module>
		<module>tests</module>
		<module>service</module>
		<module>rest</module>
		<module>jsf</module>
		<module>ear</module>
	</modules>

	<properties>
		<!-- General properties -->
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<failOnMissingWebXml>false</failOnMissingWebXml>

		<!-- BOM versions -->
		<javaee.api.version>7.0</javaee.api.version>
		<arquillian.version>1.1.9.Final</arquillian.version>
		<arquillian.rest.version>1.0.0.Alpha3</arquillian.rest.version>
		<arquillian.selenium.version>2.48.2</arquillian.selenium.version>

		<!-- Dependencies versions -->
		<wildfly.version>8.2.1.Final</wildfly.version>
		<commons.lang3.version>3.4</commons.lang3.version>

		<!-- Testing dependecies versions -->
		<junit.version>4.12</junit.version>
		<hamcrest.version>2.0.0.0</hamcrest.version>
		<easymock.version>3.4</easymock.version>
		<jacoco.version>0.7.4.201502262128</jacoco.version>
		<arquillian.jacoco.version>1.0.0.Alpha8</arquillian.jacoco.version>
		<arquillian.persistence.dbunit.version>1.0.0.Alpha7</arquillian.persistence.dbunit.version>
		<slf4j.version>1.5.10</slf4j.version>
		<mysql.connector.java.version>5.1.21</mysql.connector.java.version>
		<resteasy.version>3.0.13.Final</resteasy.version>
		<graphene.webdrive.version>2.1.0.Alpha3</graphene.webdrive.version>

		<!-- Plugins versions -->
		<wildfly.maven.plugin.version>1.1.0.Alpha4</wildfly.maven.plugin.version>
		<maven.compiler.plugin.version>3.3</maven.compiler.plugin.version>
		<maven.source.plugin.version>2.4</maven.source.plugin.version>
		<maven.javadoc.plugin.version>2.10.3</maven.javadoc.plugin.version>
		<maven.deploy.plugin.version>2.8.2</maven.deploy.plugin.version>
		<maven.dependency.plugin.version>2.10</maven.dependency.plugin.version>
		<maven.surefire.plugin.version>2.18.1</maven.surefire.plugin.version>
		<maven.resources.plugin.version>2.7</maven.resources.plugin.version>
		<maven.ear.plugin>2.10.1</maven.ear.plugin>
	</properties>

	<dependencyManagement>
		<dependencies>
			<!-- BOM -->
			<dependency>
				<groupId>javax</groupId>
				<artifactId>javaee-api</artifactId>
				<version>${javaee.api.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian</groupId>
				<artifactId>arquillian-bom</artifactId>
				<version>${arquillian.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.selenium</groupId>
				<artifactId>selenium-bom</artifactId>
				<version>${arquillian.selenium.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!-- Modules -->
			<dependency>
				<groupId>${project.groupId}</groupId>
				<artifactId>domain</artifactId>
				<version>${project.version}</version>
			</dependency>
			<dependency>
				<groupId>${project.groupId}</groupId>
				<artifactId>service</artifactId>
				<version>${project.version}</version>
			</dependency>
			<dependency>
				<groupId>${project.groupId}</groupId>
				<artifactId>rest</artifactId>
				<version>${project.version}</version>
			</dependency>
			<dependency>
				<groupId>${project.groupId}</groupId>
				<artifactId>jsf</artifactId>
				<version>${project.version}</version>
			</dependency>
			<dependency>
				<groupId>${project.groupId}</groupId>
				<artifactId>tests</artifactId>
				<version>${project.version}</version>
				<scope>test</scope>
			</dependency>

			<!-- General -->
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>${commons.lang3.version}</version>
			</dependency>

			<!-- Testing -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>
			<dependency>
				<groupId>org.hamcrest</groupId>
				<artifactId>java-hamcrest</artifactId>
				<version>${hamcrest.version}</version>
			</dependency>
			<dependency>
				<groupId>org.easymock</groupId>
				<artifactId>easymock</artifactId>
				<version>${easymock.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.extension</groupId>
				<artifactId>arquillian-persistence-dbunit</artifactId>
				<version>${arquillian.persistence.dbunit.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.extension</groupId>
				<artifactId>arquillian-rest-client-impl-3x</artifactId>
				<version>${arquillian.rest.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jboss.resteasy</groupId>
				<artifactId>resteasy-jackson-provider</artifactId>
				<version>${resteasy.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.graphene</groupId>
				<artifactId>graphene-webdriver</artifactId>
				<version>${graphene.webdrive.version}</version>
				<type>pom</type>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.extension</groupId>
				<artifactId>arquillian-jacoco</artifactId>
				<version>${arquillian.jacoco.version}</version>
			</dependency>
			<dependency>
				<groupId>org.jacoco</groupId>
				<artifactId>org.jacoco.core</artifactId>
				<version>${jacoco.version}</version>
			</dependency>
			<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>${mysql.connector.java}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-simple</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.wildfly</groupId>
				<artifactId>wildfly-dist</artifactId>
				<version>${wildfly.version}</version>
			</dependency>
			<dependency>
				<groupId>org.wildfly</groupId>
				<artifactId>wildfly-embedded</artifactId>
				<version>${wildfly.version}</version>
			</dependency>
			<dependency>
				<groupId>org.wildfly</groupId>
				<artifactId>wildfly-arquillian-container-embedded</artifactId>
				<version>${wildfly.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<deployAtEnd>true</deployAtEnd>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven.compiler.plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-javadoc-plugin</artifactId>
					<version>${maven.javadoc.plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>${maven.source.plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>${maven.deploy.plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-dependency-plugin</artifactId>
					<version>${maven.dependency.plugin.version}</version>
				</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-resources-plugin</artifactId>
					<version>${maven.resources.plugin.version}</version>
				</plugin>
				<plugin>
					<groupId>org.wildfly.plugins</groupId>
					<artifactId>wildfly-maven-plugin</artifactId>
					<version>${wildfly.maven.plugin.version}</version>
					<configuration>
						<!-- Avoids the execution of the wildfly:* goals in the subproject 
							unless the plugin is activated in the subproject. -->
						<skip>true</skip>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-ear-plugin</artifactId>
					<version>${maven.ear.plugin}</version>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>${jacoco.version}</version>
					<configuration>
						<classDumpDir>${session.executionRootDirectory}/target/classes</classDumpDir>
					</configuration>
					<executions>
						<execution>
							<id>pre-unit-test</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
						</execution>
						<execution>
							<id>post-unit-test</id>
							<phase>test</phase>
							<goals>
								<goal>report</goal>
							</goals>
						</execution>
						<execution>
							<id>pre-integration-test</id>
							<phase>pre-integration-test</phase>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
						</execution>
						<execution>
							<id>post-integration-test</id>
							<phase>post-integration-test</phase>
							<goals>
								<goal>report</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.maven.plugins
										</groupId>
										<artifactId>
											maven-dependency-plugin
										</artifactId>
										<versionRange>
											[2.10,)
										</versionRange>
										<goals>
											<goal>unpack</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>wildfly-embedded-h2</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.wildfly</groupId>
					<artifactId>wildfly-arquillian-container-embedded</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.wildfly</groupId>
					<artifactId>wildfly-embedded</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-simple</artifactId>
					<scope>test</scope>
				</dependency>
			</dependencies>
			<build>
				<testResources>
					<testResource>
						<directory>src/test/resources</directory>
					</testResource>
					<testResource>
						<directory>src/test/resources-wildfly-embedded-h2</directory>
					</testResource>
				</testResources>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<forkCount>1</forkCount>
							<systemPropertyVariables>
								<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
								<wildfly.version>${wildfly.version}</wildfly.version>
								<arquillian.launch>wildfly-embedded-h2</arquillian.launch>
							</systemPropertyVariables>
							<redirectTestOutputToFile>false</redirectTestOutputToFile>
						</configuration>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-dependency-plugin</artifactId>
						<executions>
							<execution>
								<id>unpack</id>
								<phase>process-test-classes</phase>
								<goals>
									<goal>unpack</goal>
								</goals>
								<configuration>
									<artifactItems>
										<artifactItem>
											<groupId>org.wildfly</groupId>
											<artifactId>wildfly-dist</artifactId>
											<version>${wildfly.version}</version>
											<type>zip</type>
											<overWrite>false</overWrite>
											<outputDirectory>target</outputDirectory>
										</artifactItem>
									</artifactItems>
								</configuration>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-resources-plugin</artifactId>
						<executions>
							<execution>
								<id>copy-wildfly-resources</id>
								<phase>process-test-classes</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>target/wildfly-${wildfly.version}/standalone/configuration</outputDirectory>
									<resources>
										<resource>
											<directory>src/test/resources-wildfly-embedded-h2</directory>
											<include>standalone.xml</include>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>wildfly-embedded-mysql</id>
			<dependencies>
				<dependency>
					<groupId>org.wildfly</groupId>
					<artifactId>wildfly-arquillian-container-embedded</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.wildfly</groupId>
					<artifactId>wildfly-embedded</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-simple</artifactId>
					<scope>test</scope>
				</dependency>
			</dependencies>
			<build>
				<testResources>
					<testResource>
						<directory>src/test/resources</directory>
					</testResource>
					<testResource>
						<directory>src/test/resources-wildfly-embedded-mysql</directory>
					</testResource>
				</testResources>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<forkCount>1</forkCount>
							<systemPropertyVariables>
								<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
								<mysql.version>${mysql.connector.java.version}</mysql.version>
								<wildfly.version>${wildfly.version}</wildfly.version>
								<arquillian.launch>wildfly-embedded-mysql</arquillian.launch>
							</systemPropertyVariables>
							<redirectTestOutputToFile>false</redirectTestOutputToFile>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-dependency-plugin</artifactId>
						<executions>
							<execution>
								<id>unpack</id>
								<phase>process-test-classes</phase>
								<goals>
									<goal>unpack</goal>
								</goals>
								<configuration>
									<artifactItems>
										<artifactItem>
											<groupId>org.wildfly</groupId>
											<artifactId>wildfly-dist</artifactId>
											<version>${wildfly.version}</version>
											<type>zip</type>
											<overWrite>false</overWrite>
											<outputDirectory>target</outputDirectory>
										</artifactItem>
									</artifactItems>
								</configuration>
							</execution>
							<execution>
								<id>copy-dependencies</id>
								<phase>process-test-classes</phase>
								<goals>
									<goal>copy</goal>
								</goals>
								<configuration>
									<artifactItems>
										<artifactItem>
											<groupId>mysql</groupId>
											<artifactId>mysql-connector-java</artifactId>
											<version>${mysql.connector.java.version}</version>
											<type>jar</type>
											<overWrite>false</overWrite>
											<outputDirectory>target/wildfly-${wildfly.version}/standalone/deployments</outputDirectory>
										</artifactItem>
									</artifactItems>
								</configuration>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-resources-plugin</artifactId>
						<executions>
							<execution>
								<id>copy-wildfly-resources</id>
								<phase>process-test-classes</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>target/wildfly-${wildfly.version}/standalone</outputDirectory>
									<resources>
										<resource>
											<directory>src/test/resources-wildfly-embedded-mysql</directory>
											<include>mysql-ds.xml</include>
											<targetPath>deployments</targetPath>
										</resource>
										<resource>
											<directory>src/test/resources-wildfly-embedded-mysql</directory>
											<include>standalone.xml</include>
											<targetPath>configuration</targetPath>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
