<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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>
    <parent>
        <groupId>org.glassfish.main</groupId>
        <artifactId>glassfish-parent</artifactId>
        <version>6.0.0-SNAPSHOT</version>
    </parent>
    <groupId>org.glassfish.main.tests</groupId>
    <artifactId>tests</artifactId>
    <packaging>pom</packaging>
    <name>GlassFish devtests ejb</name>  
    <modules>
        <!-- module>quicklook</module -->
    </modules>
    <dependencies>
      <dependency>
        <groupId>ant-contrib</groupId>
        <artifactId>ant-contrib</artifactId>
        <version>1.0b3</version>
      </dependency>
    </dependencies>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.8</version>
          <dependencies>
	    <dependency>
	      <groupId>com.sun</groupId>
	      <artifactId>tools</artifactId>
              <version>1.8.0</version>
	      <scope>system</scope>
	      <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
	   </dependency>     
         </dependencies>
          <executions>
            <execution>
              <id>id.test</id>
              <phase>test</phase>
              <configuration>
                <target name="antTests">
                  <property name="testMods" value="all"/>                  
                  <property name="ant-contrib-path" value="${maven.dependency.ant-contrib.ant-contrib.jar.path}"/>  
                    <ant antfile="build.xml" target="antTests"/>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
            <execution>
              <id>id.clean</id>
              <phase>clean</phase>
              <configuration>
                <target name="clean-result">
                  <property name="ant-contrib-path" value="${maven.dependency.ant-contrib.ant-contrib.jar.path}"/>  
                  <ant antfile="build.xml" target="clean-result"/>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>

          </executions>
        </plugin>
      </plugins>
    </build>
</project>
