<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.glassfish.main.appclient</groupId>
        <artifactId>client</artifactId>
        <version>6.2.6</version>
    </parent>

    <artifactId>gf-client-module</artifactId>
    <packaging>glassfish-jar</packaging>

    <!-- the main artifact is the OSGi module JAR -->
    <name>Client OSGi module (including ACC)</name>

    <developers>
        <developer>
            <id>tjquinn</id>
            <name>Tim Quinn</name>
            <url>http://blogs.sun.com/quinn</url>
            <organization>Oracle, Inc.</organization>
            <roles>
                <role>lead</role>
                <role>developer</role>
            </roles>
        </developer>
    </developers>

    <!--
        This module creates the app client container in three artifacts:
            1. OSGi module for the ACC
            2. stand-alone ACC JAR, suitable for running using java -jar ...
            3. bundle suitable for distribution to remote clients.

        Java programs that want to use the embeddable ACC would place the stand-
        alone ACC JAR on their class paths.  OSGi modules that use the embeddable
        ACC could simply declare a dependency on the ACC OSGi module.

        The zip bundle contains the stand-alone ACC JAR and all other JARs on
        which it depends.  End-users or administrators could copy this bundle
        to remote clients and expand it, resulting in a single self-contained
        directory which would contain all the required JARs.
    -->
    <properties>
        <extracted-dtd-root>temp</extracted-dtd-root>
        <extracted-dtd-top-level-directory>${extracted-dtd-root}/glassfish</extracted-dtd-top-level-directory>
        <extracted-dtd-directory>${extracted-dtd-top-level-directory}/lib/dtds</extracted-dtd-directory>
        <config-dtd-file>sun-application-client-container_1_2.dtd</config-dtd-file>

        <standalone.classifier>lib</standalone.classifier>
        <acc.osgi.module.classifier>module</acc.osgi.module.classifier>
        <findbugs.exclude>${project.basedir}/exclude.xml</findbugs.exclude>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2-core</artifactId>
        </dependency>

        <!-- required for annotation processing support -->
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>common-util</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.ejb</groupId>
            <artifactId>ejb-full-container</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!--
            We depend on the deployment/dtds and deployment/schemas modules
            but only at build-time.

            We extract the DTD and schema files and add them
            to the module JAR so they will be accessible at tuntime on the class path.

            Because we don't really rely on the zip files at runtime, we use scope "provided"
            for the dependencies. -->
        <dependency>
            <groupId>org.glassfish.main.deployment</groupId>
            <artifactId>appserver-dtds</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.deployment</groupId>
            <artifactId>appserver-schemas</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
            <scope>provided</scope>
        </dependency>


        <!-- required for InjectionManager -->
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>container-common</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Required for AnnotationDetector, AnnotationScanner, PersistenceUnitDescriptor -->
        <dependency>
            <groupId>org.glassfish.main.deployment</groupId>
            <artifactId>dol</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Required for security. -->
        <dependency>
            <groupId>org.glassfish.main.security</groupId>
            <artifactId>appclient.security</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- Required for ClientNamingConfigurator -->
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-api</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- required for ClientPipeCloser -->
        <dependency>
            <groupId>org.glassfish.main.security</groupId>
            <artifactId>webservices.security</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-naming</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.connectors</groupId>
            <artifactId>work-management</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.connectors</groupId>
            <artifactId>connectors-inbound-runtime</artifactId>
            <version>${project.version}</version>
        </dependency>


        <dependency>
            <groupId>org.glassfish.main.orb</groupId>
            <artifactId>orb-connector</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.webservices</groupId>
            <artifactId>webservices-connector</artifactId>
            <version>${project.version}</version>
        </dependency>


        <!-- Ken C. reports that eight ORB-related modules are needed, but
            the one "orb" module directly or indirectly depends on the others so I have
            just included it here. -->
        <dependency>
            <groupId>org.glassfish.corba</groupId>
            <artifactId>glassfish-corba-orb</artifactId>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.orb</groupId>
            <artifactId>orb-iiop</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.core</groupId>
            <artifactId>glassfish</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.appclient</groupId>
            <artifactId>acc-config</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.transaction</groupId>
            <artifactId>jts</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.jms</groupId>
            <artifactId>jms-core</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>jakarta.jms</groupId>
            <artifactId>jakarta.jms-api</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- for EclipseLink support -->
        <dependency>
            <groupId>org.glassfish.main.persistence</groupId>
            <artifactId>eclipselink-wrapper</artifactId>
            <version>${project.version}</version>
            <type>pom</type>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.persistence</groupId>
            <artifactId>jpa-container</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.main.persistence.cmp</groupId>
            <artifactId>cmp-internal-api</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- explicit dependencies for JARs the ACC needs -->

        <!-- jakarta.annotation-api.jar -->
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
        </dependency>

        <!-- jakarta.xml.bind-api.jar -->
        <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>

        <!-- webservices-api-osgi.jar -->
        <dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-api-osgi</artifactId>
        </dependency>


        <!-- This is needed because it provides the sniffer/detector/moduletype -->
        <dependency>
            <groupId>org.glassfish.main.appclient.server</groupId>
            <artifactId>appclient-connector</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- The next two mail-related dependencies allow mail session look-up
            and use from clients. -->
        <dependency>
            <groupId>org.glassfish.main.resources</groupId>
            <artifactId>mail-connector</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.resources</groupId>
            <artifactId>mail-runtime</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- JSON needs to be available to clients -->
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>jakarta.json</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse</groupId>
            <artifactId>yasson</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- CDI support -->
        <dependency>
            <groupId>org.jboss.weld.se</groupId>
            <artifactId>weld-se-shaded</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.cdi-api</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>jakarta.authorization</groupId>
            <artifactId>jakarta.authorization-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/.gitkeep_empty_dir</exclude>
                </excludes>
            </resource>

            <!-- The next resource definition will include the DTDs and schemas
                in the module so we can find them at runtime in the client.

                The dependency:unpack-dependency
                goal below will by default deposit the unpacked contents into target/dependency.
                The .dtd and .xsd files are packaged into their respective JARs in glassfish/lib,
                so we define that combined directory as a resource location so the .dtd and
                .xsd files will be packaged by default.

                This is coordinated with the SaxParserHandlerBundled
                class which resolves entities via the class path. -->
            <resource>
                <directory>target/dependency/glassfish/lib/</directory>
                <includes>
                    <include>**/*.dtd</include>
                    <include>**/*.xsd</include>
                </includes>
            </resource>
        </resources>
        <plugins>

            <!-- Unpack the modules which contain the DTDs and schemas so
                we can package them as resources. -->
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack-dtds-and-schemas</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeGroupIds>org.glassfish.main.deployment</includeGroupIds>
                            <includeArtifactIds>appserver-schemas,appserver-dtds</includeArtifactIds>
                            <includes>**/*.dtd,**/*.xsd</includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>

                    <archive>

                        <manifest>
                            <mainClass>org.glassfish.main.appclient.client.acc.AppClientCommand</mainClass>
                        </manifest>
                        <!--
                            It's discouraging to have to specify the class
                            path manually.

                            Ideally the plug-in would do this for us, but the jar plug-in
                            uses the name of the modules including the version strings; when the GlassFish
                            modules are packaged into the distributions the version strings are stripped
                            off. -->
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
