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

    Copyright (c) 2021 Contributors to Eclipse Foundation.
    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>7.0.0-SNAPSHOT</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.activation-api.jar -->
        <dependency>
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.eclipse.angus</groupId>
            <artifactId>angus-activation</artifactId>
        </dependency>

        <!-- jakarta.xml.bind-api.jar -->
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.activation</groupId>
                    <artifactId>jakarta.activation</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-osgi</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.activation</groupId>
                    <artifactId>jakarta.activation</artifactId>
                </exclusion>
            </exclusions>
        </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.eclipse.parsson</groupId>
            <artifactId>parsson</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.enterprise</groupId>
            <artifactId>jakarta.enterprise.lang-model</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>
