<?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</groupId>
        <artifactId>pom</artifactId>
        <version>2</version>
    </parent>
    <groupId>org.glassfish.quicklook</groupId>
    <artifactId>quicklook</artifactId>
    <name>Glassfish Quicklook Bundle</name>
    <packaging>jar</packaging>
    <version>6.0.0-SNAPSHOT</version>
    <description>This pom describes how to run QuickLook tests on the Glassfish Bundle</description>

    <build>
        <plugins>
            <plugin>
		<groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
                <artifactId>maven-antrun-extended-plugin</artifactId>
   		<executions>
                   <execution>
                     <phase>test</phase>
                     <configuration>
                       <tasks>
			 <property name="compile_classpath" refid="maven.compile.classpath"/>
                	<property name="plugin_classpath" refid="maven.plugin.classpath"/>

                	<echo message="compile classpath: ${compile_classpath}"/>
                	<echo message="plugin classpath:  ${plugin_classpath}"/>
                        <ant dir="." antfile="build.xml" target="all">
			   <property name="glassfish.home" value="${glassfish.home}"/>
			</ant>
                       </tasks>
                     </configuration>
		     <goals>
                        <goal>run</goal>
                     </goals>
                  </execution>
                </executions>
	        <dependencies>
		     <dependency>
    			<groupId>commons-codec</groupId>
    			<artifactId>commons-codec</artifactId>
    			<version>1.3</version>
		     </dependency>
		     <dependency>
    			<groupId>commons-httpclient</groupId>
    			<artifactId>commons-httpclient</artifactId>
    			<version>3.0.1</version>
		     </dependency>
		     <dependency>
    			<groupId>org.testng</groupId>
    			<artifactId>testng</artifactId>
                        <version>6.11</version>
		     </dependency>
		     <!-- dependency>
 	      		<groupId>org.testng</groupId>
 	      		<artifactId>testng</artifactId>
 	      		<version>5.7</version>
 	      		<classifier>jdk15</classifier>
 	      		<scope>compile</scope>
 	    	     </dependency -->
                </dependencies>
             </plugin>
        </plugins>
    </build>
</project>

