<?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>8.0.1</version>
  </parent>
  
  <artifactId>arquillian-tomee-tests</artifactId>
  <packaging>pom</packaging>

  <name>TomEE :: 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.0.0</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>${project.version}</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'
                    props['skip.remote.microprofile'] = 'true'
                    props['skip.webapp.microprofile'] = '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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>
              <execution>
                <id>test-tomee-remote-microprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.microprofile}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>${project.version}</tomee.version>
                    <tomee.classifier>microprofile</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-microprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.microprofile}</skip>
                  <systemPropertyVariables>
                    <tomee.version>${project.version}</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-microprofile-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>${surefire.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>${project.version}</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>
