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

    Copyright (c) 2015, 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 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <build>
        <plugins>
            <plugin>
                <groupId>org.glassfish.jersey.test-framework.maven</groupId>
                <artifactId>container-runner-maven-plugin</artifactId>
                <configuration>
                    <distUrl>file://${project.build.testOutputDirectory}/glassfish-stub.zip</distUrl>
                    <distTargetLocation>${project.build.directory}/latest-glassfish.zip</distTargetLocation>
                    <distDir>${project.build.testOutputDirectory}/gf4</distDir>
                    <distSubdir>glassfish4</distSubdir>
                    <asHome>glassfish</asHome>
                    <domain>memleak_test_domain</domain>
                    <applicationName>jax-rs-memleak-test-app</applicationName>
                    <logFile>server.log</logFile>
                    <!--<asHome>${project.build.testOutputDirectory}/gf4/glassfish4/glassfish</asHome>-->
                    <contextRoot>app</contextRoot>
                    <project implementation="org.glassfish.jersey.test.maven.runner.gf4.maven.RunnerTestMavenProject"/>
                    <scriptsDirectory>${project.build.directory}/tmp</scriptsDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
