<?xml version="1.0"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
  license agreements. See the NOTICE file distributed with this work for additional 
  information regarding copyright ownership. The ASF licenses this file to 
  You under the Apache License, Version 2.0 (the "License"); you may not use 
  this file except in compliance with the License. You may obtain a copy of 
  the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
  by applicable law or agreed to in writing, software distributed under the 
  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
  OF ANY KIND, either express or implied. See the License for the specific 
  language governing permissions and limitations under the License. -->
<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>
    <artifactId>arquillian</artifactId>
    <groupId>org.apache.tomee</groupId>
    <version>7.1.4</version>
  </parent>
  
  <artifactId>arquillian-tomee-tests</artifactId>
  <packaging>pom</packaging>

  <name>OpenEJB :: Arquillian Adaptors Parent :: Tests</name>

  <modules>
    <module>arquillian-tomee-webprofile-tests</module>
    <module>arquillian-tomee-jaxrs-tests</module>
    <module>arquillian-tomee-jaxws-tests</module>
    <module>arquillian-tomee-jms-tests</module>
    <module>arquillian-tomee-codi-tests</module>
    <module>arquillian-tomee-config-tests</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>javaee-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jboss.shrinkwrap.resolver</groupId>
      <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
      <version>2.2.7</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.2.4</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>ziplock</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
      <version>${version.arquillian}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.2.2</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.shrinkwrap.descriptors</groupId>
      <artifactId>shrinkwrap-descriptors-impl-javaee</artifactId>
      <version>${version.shrinkwrap.descriptor}</version>
    </dependency>
    <dependency>
      <groupId>org.jboss.shrinkwrap.descriptors</groupId>
      <artifactId>shrinkwrap-descriptors-api-javaee</artifactId>
      <version>${version.shrinkwrap.descriptor}</version>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-embedded</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-remote</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-webapp-remote</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency> <!-- tomee-embedded needs it + dependencies but tomee-*-remote doesn't need dependencies so to avoid conflicts bringing it back here -->
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-core</artifactId>
      <version>${project.version}</version>
    </dependency>


    <!-- for tests with Hibernate -->

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.9.Final</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.3.9.Final</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.hibernate.common</groupId>
      <artifactId>hibernate-commons-annotations</artifactId>
      <version>4.0.5.Final</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>2.7.7</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss</groupId>
      <artifactId>jandex</artifactId>
      <version>1.1.0.Final</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging</artifactId>
      <version>3.1.3.GA</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging-annotations</artifactId>
      <version>1.2.0.Beta1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.18.1-GA</version>
      <scope>provided</scope>
    </dependency>

    <!-- just to get it in the correct order -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apache-tomee</artifactId>
      <version>${project.version}</version>
      <classifier>webprofile</classifier>
      <type>zip</type>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat</artifactId>
      <version>${tomcat.version}</version>
      <type>zip</type>
    </dependency>
  </dependencies>

  <profiles>

    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <argLine>-javaagent:${settings.localRepository}/org/apache/tomee/openejb-javaagent/${project.version}/openejb-javaagent-${project.version}.jar</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
              <reuseForks>true</reuseForks>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>all-adapters</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>configure-adapters</id>
                <phase>test</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>
                    // goal: manage the profile-under-test property
                    // -&gt; set to webprofile use all distributions
                    // -&gt; set to plus use only plus
                    // -&gt; set to plume use only plume
                    def props = project.properties

                    def skip = props['maven.test.skip']

                    props['skip.embedded'] = 'true'
                    props['skip.remote.webprofile'] = 'true'
                    props['skip.remote.plus'] = 'true'
                    props['skip.remote.plume'] = 'true'
                    props['skip.webapp.webprofile'] = 'true'
                    props['skip.webapp.plus'] = 'true'
                    props['skip.webapp.plume'] = 'true'

                    if ("true" != skip) {
                      def minProfile = props['profile-under-test']

                      if ("webprofile" == minProfile) {
                        props['skip.embedded'] = 'false'
                        props['skip.remote.webprofile'] = 'false'
                        props['skip.webapp.webprofile'] = 'false'
                        props['skip.remote.plus'] = 'false'
                        props['skip.webapp.plus'] = 'false'
                        props['skip.remote.plume'] = 'false'
                        props['skip.webapp.plume'] = 'false'
                      } else if ("plus" == minProfile) {
                        props['skip.embedded'] = 'false'
                        props['skip.remote.plus'] = 'false'
                        props['skip.webapp.plus'] = 'false'
                        props['skip.remote.plume'] = props['skip.remote.plume'] ? props['skip.remote.plume'] : 'false'
                        props['skip.webapp.plume'] = props['skip.webapp.plume'] ? props['skip.webapp.plume'] : 'false'
                      }
                    }

                    println("Embedded adapter activated ? " + !Boolean.parseBoolean(props['skip.embedded']))
                    println("Remote webprofile adapter activated ? " +
                        !Boolean.parseBoolean(props['skip.remote.webprofile']))
                    println("Remote plus adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.plus']))
                    println("Remote plume adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.plume']))
                    println("Webapp weprofile adapter activated ? " +
                        !Boolean.parseBoolean(props['skip.webapp.webprofile']))
                    println("Webapp plus adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.plus']))
                    println("Webapp plume adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.plume']))
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>

              <execution>
                <id>test-tomee-remote</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.webprofile}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-secpol</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.webprofile}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>${project.version}</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote-secpol</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.embedded}</skip>
                  <argLine>-javaagent:${settings.localRepository}/org/apache/tomee/openejb-javaagent/${project.version}/openejb-javaagent-${project.version}.jar -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=768M</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.plume}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>plume</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.plus}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>plus</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.webprofile}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.plus}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plus-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.plume}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plume-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
              <reuseForks>true</reuseForks>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>


    <profile>
      <id>buildbot</id>

      <dependencies>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-embedded</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-remote</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-webapp-remote</artifactId>
          <version>${project.version}</version>
        </dependency>

        <!-- just to get it in the correct order -->
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>webprofile</classifier>
          <type>zip</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>plus</classifier>
          <type>zip</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>plume</classifier>
          <type>zip</type>
        </dependency>

        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-plus-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-plume-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat</artifactId>
          <version>${tomcat.version}</version>
          <type>zip</type>
        </dependency>

      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <executions>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <argLine>-XX:MaxPermSize=768M</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>

              <!-- Remote against Web Profile, JAX-RS and Plus -->

              <execution>
                <id>test-tomee-remote-webprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>plus</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.classifier>plume</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>

              <!-- Tomcat + war against Web Profile, JAX-RS and Plus -->

              <execution>
                <id>test-tomee-webapp-remote-webprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plus-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.1.4</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plume-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>


    <profile>
      <!--
      Added to make it easy to quickly verify if something "should" work
      -->
      <id>glassfish-embedded</id>
      <properties>
        <version.glassfish>3.1.2.2</version.glassfish>
        <version.arquillian.glassfish.embedded>1.0.0.CR4</version.arquillian.glassfish.embedded>
        <version.mockito>1.9.0</version.mockito>
        <version.maven.embedded.glassfish.plugin>3.1.1</version.maven.embedded.glassfish.plugin>
        <version.maven.war.plugin>2.1.1</version.maven.war.plugin>
        <version.maven.compiler.plugin>2.3.2</version.maven.compiler.plugin>
        <version.maven.failsafe.plugin>2.11</version.maven.failsafe.plugin>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.jboss.arquillian.junit</groupId>
          <artifactId>arquillian-junit-container</artifactId>
          <version>${version.arquillian}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish.main.extras</groupId>
          <artifactId>glassfish-embedded-all</artifactId>
          <version>${version.glassfish}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.jboss.arquillian.container</groupId>
          <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
          <version>${version.arquillian.glassfish.embedded}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

  <properties>
    <profile-under-test>webprofile</profile-under-test>
  </properties>
</project>
