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

    <groupId>com.baeldung</groupId>
    <artifactId>jee7</artifactId>
    <version>1.0-SNAPSHOT</version>
    <description>JavaEE 7 Arquillian Archetype Sample</description>

    <properties>
        <java.min.version>1.8</java.min.version>
        <maven.min.version>3.0.0</maven.min.version>

        <junit.version>4.12</junit.version>
        <javaee_api.version>7.0</javaee_api.version>
        <arquillian_core.version>1.1.11.Final</arquillian_core.version>
        <wildfly.version>8.2.1.Final</wildfly.version>
        <awaitility.version>1.7.0</awaitility.version>
        <undertow-websockets-jsr.version>1.4.6.Final</undertow-websockets-jsr.version>
        <resteasy.version>3.0.19.Final</resteasy.version>
        <glassfish-embedded-all.version>4.1.1</glassfish-embedded-all.version>
        <javax.json.version>1.0.4</javax.json.version>
        <tyrus.version>1.13</tyrus.version>
        <jersey.version>2.25</jersey.version>
        <arquillian-glassfish.version>1.0.0.Final</arquillian-glassfish.version>

        <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>
    </properties>

    <prerequisites>
        <maven>${maven.min.version}</maven>
    </prerequisites>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>${arquillian_core.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
	        <dependency>
	            <groupId>org.jboss.arquillian.extension</groupId>
	            <artifactId>arquillian-drone-bom</artifactId>
	            <version>2.0.1.Final</version>
	            <type>pom</type>
	            <scope>import</scope>
	        </dependency>            
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>${javaee_api.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.junit</groupId>
            <artifactId>arquillian-junit-container</artifactId>
            <scope>test</scope>
        </dependency>
		<dependency>
		    <groupId>org.jboss.arquillian.graphene</groupId>
		    <artifactId>graphene-webdriver</artifactId>
		    <version>2.1.0.Final</version>
		    <type>pom</type>
		    <scope>test</scope>
		</dependency>        
        <dependency>
            <groupId>com.jayway.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <version>${awaitility.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.jboss.shrinkwrap.resolver</groupId>
            <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
            <scope>test</scope>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>org.jboss.shrinkwrap.resolver</groupId>
            <artifactId>shrinkwrap-resolver-impl-maven-archive</artifactId>
            <scope>test</scope>
        </dependency>
		    <dependency>
		        <groupId>org.apache.httpcomponents</groupId>
		        <artifactId>httpclient</artifactId>
		        <version>4.5</version>
		    </dependency>		
		    <dependency>
		        <groupId>commons-io</groupId>
		        <artifactId>commons-io</artifactId>
		        <version>2.4</version>
		    </dependency>        
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.14</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.14</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
		<dependency>
		  <groupId>javax.servlet.jsp</groupId>
		  <artifactId>jsp-api</artifactId>
		  <version>2.2</version>
		  <scope>provided</scope>
		</dependency>
		<dependency>
		  <groupId>taglibs</groupId>
		  <artifactId>standard</artifactId>
		  <version>1.1.2</version>
		</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.min.version}</source>
                    <target>${java.min.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>**/*LongRunningUnitTest.java</exclude>
                        <exclude>**/*ManualTest.java</exclude>
                        <exclude>**/*LiveTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>

        <profile>
            <id>wildfly-managed-arquillian</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <serverProfile>standalone-full.xml</serverProfile>
                <serverRoot>${project.build.directory}/wildfly-${version.wildfly}</serverRoot>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>io.undertow</groupId>
                    <artifactId>undertow-websockets-jsr</artifactId>
                    <version>${undertow-websockets-jsr.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-client</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-jaxb-provider</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-json-p-provider</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.wildfly</groupId>
                    <artifactId>wildfly-arquillian-container-managed</artifactId>
                    <version>${wildfly.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
            <build>
	            <pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>2.8</version>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                        </configuration>
                        <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>${project.build.directory}</outputDirectory>
                                        </artifactItem>
                                    </artifactItems>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.17</version>
                        <configuration>
                            <environmentVariables>
                                <JBOSS_HOME>${project.build.directory}/wildfly-${wildfly.version}</JBOSS_HOME>
                            </environmentVariables>
                        </configuration>
                    </plugin>
                </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>wildfly-remote-arquillian</id>
            <dependencies>
                <dependency>
                    <groupId>io.undertow</groupId>
                    <artifactId>undertow-websockets-jsr</artifactId>
                    <version>${undertow-websockets-jsr.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-client</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-jaxb-provider</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-json-p-provider</artifactId>
                    <version>${resteasy.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.wildfly</groupId>
                    <artifactId>wildfly-arquillian-container-remote</artifactId>
                    <version>${wildfly.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>glassfish-embedded-arquillian</id>
            <dependencies>
                <dependency>
                    <groupId>org.glassfish.main.extras</groupId>
                    <artifactId>glassfish-embedded-all</artifactId>
                    <version>${glassfish-embedded-all.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish</groupId>
                    <artifactId>javax.json</artifactId>
                    <version>${javax.json.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.tyrus</groupId>
                    <artifactId>tyrus-client</artifactId>
                    <version>${tyrus.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.tyrus</groupId>
                    <artifactId>tyrus-container-grizzly-client</artifactId>
                    <version>${tyrus.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jersey.core</groupId>
                    <artifactId>jersey-client</artifactId>
                    <version>${jersey.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.arquillian.container</groupId>
                    <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
                    <version>${arquillian-glassfish.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>glassfish-remote-arquillian</id>
            <dependencies>
                <dependency>
                    <groupId>org.glassfish</groupId>
                    <artifactId>javax.json</artifactId>
                    <version>${javax.json.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.tyrus</groupId>
                    <artifactId>tyrus-client</artifactId>
                    <version>${tyrus.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.tyrus</groupId>
                    <artifactId>tyrus-container-grizzly-client</artifactId>
                    <version>${tyrus.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jersey.core</groupId>
                    <artifactId>jersey-client</artifactId>
                    <version>${jersey.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jersey.media</groupId>
                    <artifactId>jersey-media-json-jackson</artifactId>
                    <version>${jersey.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jersey.media</groupId>
                    <artifactId>jersey-media-json-processing</artifactId>
                    <version>${jersey.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.arquillian.container</groupId>
                    <artifactId>arquillian-glassfish-remote-3.1</artifactId>
                    <version>${arquillian-glassfish.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>webdriver-chrome</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <browser>chrome</browser>
            </properties>
        </profile>

        <profile>
            <id>webdriver-firefox</id>
            <properties>
                <browser>firefox</browser>
            </properties>
		</profile>
    </profiles>
</project>