<?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

-->

<!--
INSTRUCTIONS for running nucleus admin dev tests.

To run all of the tests using the staged nucleus build in distributions/nucleus:
    mvn test

To run just one test:
    mvn -Dtest=MiscCommandsTest,NucleusStartStopTest test

Some tests require testing libraries/modules in running distribution. Please do
NOT start test against running instance.

To run tests based on your own install:
    mvn -Dnucleus.home=...somedirectory/nucleus test

To see the output of a test run, look in the target/surefire-reports directory.
The TEST-TestSuite.xml file is especially useful.

INSTRUCTIONS for adding tests.

Copy one of the existing test files, such as MiscCommandsTest.java.  Then add
tests.  The file will automatically be picked up as part of the suite. There is
no need to modify this pom.xml file or any other configuration file. Useful
utilities are in the NucleusTestUtils class.

Test suit contains place for additional modules/libraries with testing content
that are copied into the Nucleus before start and removed after stop:
- src/addon/module/* -> <Nucleus>/modules
(If you need to add your testing module to different directory in nucleus than
modify org.glassfish.nucleus.admin.NucleusStartStopTest static initializer
of COPY_LIB map constant.)

-->
<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>

    <parent>
        <groupId>org.glassfish.main.tests</groupId>
        <artifactId>nucleus-tests</artifactId>
        <version>7.0.0-SNAPSHOT</version>
    </parent>

    <groupId>org.glassfish.tests</groupId>
    <artifactId>nucleus-admin</artifactId>

    <name>Nucleus Tests - Admin</name>
    <description>This pom describes how to run admin developer tests on the Nucleus Bundle</description>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.admin</groupId>
            <artifactId>rest-client</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.admin</groupId>
            <artifactId>rest-service</artifactId>
            <version>${project.version}</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>common-util</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-osgi</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-invoker-plugin</artifactId>
                <configuration>
                    <pomIncludes>
                        <pomInclude>modules/*/pom.xml</pomInclude>
                        <pomInclude>asadmin/*/pom.xml</pomInclude>
                    </pomIncludes>
                    <goals>
                        <goal>clean</goal>
                        <goal>package</goal>
                    </goals>
                    <projectsDirectory>${basedir}/src/addon/</projectsDirectory>
                    <cloneProjectsTo>${project.build.directory}/addon</cloneProjectsTo>
                </configuration>
                <executions>
                    <execution>
                        <id>build-addons</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <properties>
                        <runOrder>alphabetical</runOrder>
                    </properties>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
