<!--

    Copyright (c) 2018 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 default="build"
    xmlns:maven="jelly:maven"
    xmlns:j="jelly:core"
    xmlns:define="jelly:define"
    xmlns:util="jelly:util"
    xmlns:ant="jelly:ant">
    <extend>../bootstrap/maven.xml</extend>

    <goal name="runtest" description="Running Quicklook using maven/ant">
        <attainGoal name="init-tests"/>
        <j:set var="module.dir" value="./" />
        <j:set var="ant.target" value="all-pe" />
        <attainGoal name="invoke-ant"/>
    </goal>

    <goal name="runtest-ee" description="Running EE Quicklook using maven/ant/sh">
        <attainGoal name="init-tests"/>
        <attainGoal name="runtest"/>
        <j:set var="module.dir" value="./" />
        <j:set var="ant.target" value="only-ee" />
        <attainGoal name="invoke-ant"/>
    </goal>

    <goal name="runtest-ee-standalone" description="Running EE Quicklook using maven/ant/sh">
        <attainGoal name="init-tests"/>
        <j:set var="module.dir" value="./" />
        <j:set var="ant.target" value="only-ee" />
        <attainGoal name="invoke-ant"/>
    </goal>

    <goal name="init-tests" description="Initializing Quicklook..">
        <ant:ant dir="." target="copyMailJars"/>
    </goal>

    <goal name="clean" description="Clean using ant">
        <j:set var="ant.target" value="clobber-tests" />
        <j:set var="module.dir" value="./" />
        <attainGoal name="invoke-ant"/>
    </goal>

    <goal name="checkout">
        <ant:cvs cvsRoot="${glassfish.cvsroot}" tag="${glassfish.cvstag}"
                 package="${glassfish.module.name}"
                 dest="../."/>
    </goal>
</project>
