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

    Copyright (c) 1997, 2021 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>7.0.0-SNAPSHOT</version>
    </parent>
    <groupId>org.glassfish.main.tests</groupId>
    <artifactId>tests</artifactId>
    <packaging>pom</packaging>
    <name>GlassFish devtests cdi</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>
          <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.1</id>
              <phase>test</phase>
              <configuration>
                <target name="mvnUsage" unless="testMods">
                  <ant antfile="build.xml" target="mvnUsage"/>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
            <execution>
              <id>id.test.2</id>
              <phase>test</phase>
              <configuration>
                <target name="antTests" if="testMods">
                  <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">
                  <ant antfile="build.xml" target="clean-result"/>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>

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