<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->

<!-- $Revision$ $Date$ -->

<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.openejb.cts</groupId>
  <artifactId>openejb-tck</artifactId>
  <name>OpenEJB TCK Harness</name>

  <version>1.0-SNAPSHOT</version>
  <!--openejb.version-->

  <description>
    OpenEJB TCK Harness
  </description>

  <properties>
    <!--openejb.version>7.0.0-M1</openejb.version-->
    <!--tomee.version>7.0.0-M1</tomee.version-->

    <openejb.groupId>org.apache.openejb</openejb.groupId>

    <openejb.version>4.7.3</openejb.version>
    <tomee.version>1.7.3</tomee.version>


    <tomcat.version>7.0.67</tomcat.version>

    <derby.version>10.7.1.1</derby.version>

    <!--
    NOTE: User must define "javaee6.cts.home" and "javaee6.ri.home" in ~/.m2/settings.xml
    -->
    <javaee.cts.home>${javaee6.cts.home}</javaee.cts.home>
    <javaee.ri.home>${javaee6.ri.home}</javaee.ri.home>
    <javaee.tck.version>6.0a</javaee.tck.version>

    <localRepository>${settings.localRepository}</localRepository>
    <examples.version>1.1.0-SNAPSHOT</examples.version>
    <http.proxy.host>${settings.activeProxy.host}</http.proxy.host>
    <http.proxy.port>${settings.activeProxy.port}</http.proxy.port>
    <http.proxy.username>${settings.activeProxy.username}</http.proxy.username>
    <http.proxy.password>${settings.activeProxy.password}</http.proxy.password>
    <http.proxy.nonProxyHosts>${settings.activeProxy.nonProxyHosts}</http.proxy.nonProxyHosts>

    <repoPath>${localRepository}</repoPath>


    <!-- externalized ports for tx.jte file -->
    <webcontainer.default.host>localhost</webcontainer.default.host>
    <webcontainer.ri.host>localhost</webcontainer.ri.host>
    <webcontainer.ri.port>8000</webcontainer.ri.port>
    <orb.default.host>localhost</orb.default.host>
    <orb.default.port>2809</orb.default.port>
    <orb.ri.host>localhost</orb.ri.host>
    <orb.ri.port>3700</orb.ri.port>
    <rmiiiop.http.server.host>localhost</rmiiiop.http.server.host>
    <rmiiiop.http.server.port>10000</rmiiiop.http.server.port>
    <harness.log.port>2000</harness.log.port>

    <!-- Random CTS properties that have been externalized -->
    <deliverable.class>com.sun.ts.lib.deliverable.cts.CTSDeliverable</deliverable.class>
    <deploy_delay_in_minutes>5</deploy_delay_in_minutes>
    <cts.harness.debug>false</cts.harness.debug>

    <!-- Disable Surefire, we are using Javatest to execute integration tests -->
    <maven.test.skip>true</maven.test.skip>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>openejb-lite</artifactId>
      <version>${openejb.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-client</artifactId>
      <version>5.12.0</version>
      <exclusions>
        <exclusion>
          <artifactId>slf4j-api</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>com.sun.javaee.tck</groupId>
      <artifactId>tsharness</artifactId>
      <version>${javaee.tck.version}</version>
    </dependency>

    <dependency>
      <groupId>com.sun.javaee.tck</groupId>
      <artifactId>javatest</artifactId>
      <version>${javaee.tck.version}</version>
    </dependency>

    <dependency>
      <groupId>com.sun.javaee.tck</groupId>
      <artifactId>cts</artifactId>
      <version>${javaee.tck.version}</version>
    </dependency>

    <dependency>
      <groupId>com.sun.javaee.tck</groupId>
      <artifactId>whitebox</artifactId>
      <version>${javaee.tck.version}</version>
    </dependency>

    <dependency>
      <groupId>com.sun.javaee.tck</groupId>
      <artifactId>dbprocedures</artifactId>
      <version>${javaee.tck.version}</version>
      <!-- this is for derby which supports BOOLEAN, version we were using was for derby supporting SMALLINT instead
      <systemPath>${javaee6.cts.home}/lib/dbprocedures.jar</systemPath>
      <scope>system</scope>
      -->
    </dependency>

    <dependency>
      <groupId>backport-util-concurrent</groupId>
      <artifactId>backport-util-concurrent</artifactId>
      <version>2.2</version>
    </dependency>

    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>openejb-core</artifactId>
      <version>${openejb.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>junit</artifactId>
          <groupId>junit</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>openejb-client</artifactId>
      <version>${openejb.version}</version>
    </dependency>

    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>tomee-loader</artifactId>
      <type>jar</type>
      <version>${tomee.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.modules</groupId>
      <artifactId>geronimo-mail</artifactId>
      <version>2.0.2</version>
    </dependency>

    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <version>${derby.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derbynet</artifactId>
      <version>${derby.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derbyclient</artifactId>
      <version>${derby.version}</version>
    </dependency>

    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>openejb-derbynet</artifactId>
      <version>${openejb.version}</version>
    </dependency>

    <dependency>
      <groupId>${openejb.groupId}</groupId>
      <artifactId>webdeployer</artifactId>
      <version>${openejb.version}</version>
    </dependency>
  </dependencies>

  <profiles>

    <!-- =================== -->
    <!-- Standalone Environment -->
    <!-- =================== -->

    <profile>
      <id>standalone-environment</id>

      <activation>
        <property>
          <name>webcontainer</name>
          <value>none</value>
        </property>
      </activation>

      <properties>
        <!-- where we will unpack openejb -->
        <openejb.home>${project.build.directory}/apache-openejb-${openejb.version}</openejb.home>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>

            <executions>
              <execution>
                <id>unpack</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>${openejb.groupId}</groupId>
                      <artifactId>openejb-standalone</artifactId>
                      <version>${openejb.version}</version>
                      <type>zip</type>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

      <dependencies>
        <dependency>
          <groupId>${openejb.groupId}</groupId>
          <artifactId>openejb-standalone</artifactId>
          <type>zip</type>
          <version>${openejb.version}</version>
        </dependency>
      </dependencies>
    </profile>

    <!-- =================== -->
    <!-- Tomcat Environment -->
    <!-- =================== -->

    <profile>
      <id>tomcat-environment</id>

      <activation>
        <property>
          <name>webcontainer</name>
          <value>tomcat</value>
        </property>
      </activation>

      <properties>
        <!-- where we will unpack tomcat -->
        <openejb.home>${project.build.directory}/apache-tomcat-${tomcat.version}</openejb.home>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>

            <executions>
              <execution>
                <id>unpack</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.openejb.tck</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                    </artifactItem>
                    <artifactItem>
                      <groupId>org.apache.tomee</groupId>
                      <artifactId>tomee-webapp</artifactId>
                      <version>${tomee.version}</version>
                      <type>war</type>
                      <outputDirectory>${openejb.home}/webapps/tomee</outputDirectory>
                    </artifactItem>
                    <artifactItem>
                      <groupId>${openejb.groupId}</groupId>
                      <artifactId>tomee-loader</artifactId>
                      <version>${tomee.version}</version>
                      <type>jar</type>
                      <outputDirectory>${openejb.home}/lib</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

      <dependencies>

        <dependency>
          <groupId>${openejb.groupId}</groupId>
          <artifactId>tomee-webapp</artifactId>
          <type>war</type>
          <version>${tomee.version}</version>
        </dependency>

      </dependencies>

    </profile>


    <!-- =================== -->
    <!-- TomEE Environment -->
    <!-- =================== -->

    <profile>
      <id>tomee-environment</id>

      <activation>
        <property>
          <name>webcontainer</name>
          <value>tomee</value>
        </property>
      </activation>

      <properties>
        <!-- where we will unpack tomee -->
        <openejb.home>target/apache-tomee-webprofile-${tomee.version}</openejb.home>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>

            <executions>
              <execution>
                <id>unpack</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>${openejb.groupId}</groupId>
                      <artifactId>apache-tomee</artifactId>
                      <version>${tomee.version}</version>
                      <type>zip</type>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                      <classifier>webprofile</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

      <dependencies>

        <dependency>
          <groupId>${openejb.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <type>zip</type>
          <version>${tomee.version}</version>
          <classifier>webprofile</classifier>
        </dependency>

      </dependencies>

    </profile>

    <profile>
      <id>tomee-plus-environment</id>

      <activation>
        <property>
          <name>webcontainer</name>
          <value>tomee-plus</value>
        </property>
      </activation>

      <properties>
        <openejb.home>target/apache-tomee-plus-${tomee.version}</openejb.home>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>unpack</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>${openejb.groupId}</groupId>
                      <artifactId>apache-tomee</artifactId>
                      <version>${tomee.version}</version>
                      <type>zip</type>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                      <classifier>plus</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

      <dependencies>

        <dependency>
          <groupId>${openejb.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <type>zip</type>
          <version>${tomee.version}</version>
          <classifier>plus</classifier>
        </dependency>

      </dependencies>

    </profile>

    <profile>
      <id>tomee-plume-environment</id>

      <activation>
        <property>
          <name>webcontainer</name>
          <value>tomee-plume</value>
        </property>
      </activation>

      <properties>
        <openejb.home>target/apache-tomee-plume-${tomee.version}</openejb.home>
      </properties>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>unpack</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>${openejb.groupId}</groupId>
                      <artifactId>apache-tomee</artifactId>
                      <version>${tomee.version}</version>
                      <type>zip</type>
                      <outputDirectory>${project.build.directory}</outputDirectory>
                      <classifier>plume</classifier>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>

      <dependencies>

        <dependency>
          <groupId>${openejb.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <type>zip</type>
          <version>${tomee.version}</version>
          <classifier>plume</classifier>
        </dependency>

      </dependencies>

    </profile>

    <!-- ==================== -->
    <!-- Reverse Test setup   -->
    <!-- ==================== -->

    <profile>
      <id>reverse-setup</id>

      <activation>
        <property>
          <name>reverse</name>
          <value>true</value>
        </property>
      </activation>

      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.4</version>
            <executions>
              <execution>
                <id>generate-reverse-tests</id>
                <phase>process-test-resources</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>
                    new commands.ReverseSetupCommand(this).execute()
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
    sql commands are very long to execute
    and not always useful (jaxrs tests for instance)
    so simply let skip it in an easy manner
    -->
    <profile>
      <id>sql</id>

      <activation>
        <property>
          <name>sql</name>
          <value>active</value>
        </property>
      </activation>

      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>1.5</version>

            <dependencies>
              <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derbyclient</artifactId>
                <version>${derby.version}</version>
              </dependency>
            </dependencies>

            <executions>
              <execution>
                <id>create-schema</id>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <driver>org.apache.derby.jdbc.ClientDriver</driver>
                  <url>jdbc:derby://localhost:${derby.server.port}/derbydb;create=true</url>
                  <username>cts</username>
                  <password>cts</password>
                  <autocommit>true</autocommit>
                  <onError>continue</onError>
                  <srcFiles>
                    <srcFile>src/test/sql/derby/derby.ddl.sql</srcFile>
                    <srcFile>src/test/sql/derby/derby.ddl.jstl.sql</srcFile>
                    <srcFile>src/test/sql/derby/derby.ddl.persistence.sql</srcFile>
                    <srcFile>src/test/sql/derby/derby.ddl.sprocs.sql</srcFile>
                  </srcFiles>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <build>
    <defaultGoal>install</defaultGoal>
    <testResources>
      <testResource>
        <directory>${pom.basedir}/src/test/resources</directory>
      </testResource>
    </testResources>

    <pluginManagement>
      <plugins>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.10</version>
        </plugin>

        <plugin>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>gmaven-plugin</artifactId>
          <version>1.5</version>
          <configuration>
            <scriptpath>
              <element>${pom.basedir}/src/test/script</element>
            </scriptpath>
            <classpath>
              <element>
                <groupId>jline</groupId>
                <artifactId>jline</artifactId>
                <version>0.9.94</version>
              </element>
            </classpath>
            <defaults>
              <testSectionsFile>${pom.basedir}/sections.properties</testSectionsFile>
              <logOutputDirectory>${project.build.directory}/logs</logOutputDirectory>
              <backupLogs>true</backupLogs>
            </defaults>
          </configuration>
        </plugin>

      </plugins>
    </pluginManagement>

    <!--
    NOTE: These are the default plugin executions that should always execute.
          This performs setup and validation of the environment.
    -->

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-idea-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <jdkName>1.7</jdkName>
          <jdkLevel>1.7</jdkLevel>
          <linkModules>true</linkModules>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.9.1</version>
        <executions>
          <execution>
            <id>reserve-network-port</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>reserve-network-port</goal>
            </goals>
            <configuration>
              <portNames>
                <portName>webcontainer.default.port</portName>
                <portName>webcontainer.default.ssl.port</portName>
                <portName>webcontainer.default.clientcert.port</portName>
                <portName>webcontainer.default.shutdown.port</portName>
                <portName>derby.server.port</portName>
                <portName>harness.log.port</portName>
              </portNames>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
          <execution>
            <id>start-database</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <cleanupDaemonThreads>false</cleanupDaemonThreads>
          <killAfter>-1</killAfter>
          <arguments>
            <argument>${derby.server.port}</argument>
          </arguments>
          <mainClass>org.apache.openejb.cts.DerbyRunner</mainClass>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>

        <executions>
          <execution>
            <id>unpack</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${openejb.groupId}</groupId>
                  <artifactId>openejb-standalone</artifactId>
                  <version>${openejb.version}</version>
                  <type>zip</type>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
          <execution>
            <id>copy-dependencies</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${openejb.groupId}</groupId>
                  <artifactId>openejb-lite</artifactId>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.activemq</groupId>
                  <artifactId>activemq-client</artifactId>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>backport-util-concurrent</groupId>
                  <artifactId>backport-util-concurrent</artifactId>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>com.sun.javaee.tck</groupId>
                  <artifactId>tsharness</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>com.sun.javaee.tck</groupId>
                  <artifactId>cts</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>com.sun.javaee.tck</groupId>
                  <artifactId>whitebox</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>com.sun.javaee.tck</groupId>
                  <artifactId>dbprocedures</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.geronimo.modules</groupId>
                  <artifactId>geronimo-mail</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>${openejb.groupId}</groupId>
                  <artifactId>openejb-derbynet</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derby</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derbynet</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derbyclient</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
                <artifactItem>
                  <groupId>${openejb.groupId}</groupId>
                  <artifactId>webdeployer</artifactId>
                  <outputDirectory>${openejb.home}/lib</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
      TomEE embeds a lot of applications in. We should remove all not necessary web
      application for TCK (ie. all but openejb and ROOT
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <id>remove-apps-and-copy-libs-from-tck</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <delete dir="${openejb.home}/webapps/ROOT"/>
                <delete dir="${openejb.home}/webapps/docs"/>
                <delete dir="${openejb.home}/webapps/examples"/>
                <delete dir="${openejb.home}/webapps/ejb-examples"/>
                <delete dir="${openejb.home}/webapps/manager"/>
                <delete dir="${openejb.home}/webapps/host-manager"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.5</version>

        <dependencies>
          <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>${derby.version}</version>
          </dependency>
        </dependencies>

        <executions>
          <execution>
            <id>validate-environment</id>
            <phase>validate</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                new openejb.tck.commands.ValidateCommand(this).execute()
              </source>
            </configuration>
          </execution>

          <execution>
            <id>setup-environment</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                new openejb.tck.commands.SetupCommand(this).execute()
              </source>
            </configuration>
          </execution>

          <execution>
            <id>javatest</id>
            <phase>integration-test</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <classpath>
                <element>
                  <groupId>jline</groupId>
                  <artifactId>jline</artifactId>
                  <version>0.9.94</version>
                </element>

                <!-- Included to access the testsuite reporting classes -->
                <element>
                  <groupId>org.apache.geronimo.cts</groupId>
                  <artifactId>j2eetck-maven-plugin</artifactId>
                  <version>3.0.13022011</version>
                </element>
              </classpath>
              <defaults>
                <logOutput>true</logOutput>
                <logOutputDirectory>${project.build.directory}/logs</logOutputDirectory>
              </defaults>
              <source>
                new openejb.tck.commands.JavaTestCommand(this).execute()
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <repositories>
    <repository>
      <id>apache-m2-snapshot</id>
      <name>Apache M2 Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>openejb-cts-file</id>
      <name>OpenEJB CTS File Repository</name>
      <url>file://${pom.basedir}/src/test/repo</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>codehaus-snapshots</id>
      <name>Codehaus Snapshot</name>
      <url>https://nexus.codehaus.org/content/repositories/snapshots/</url>
      <layout>default</layout>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
    <pluginRepository>
      <id>openejb-cts-file</id>
      <name>OpenEJB CTS File Repository</name>
      <url>file://${pom.basedir}/src/test/repo</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

</project>