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

    Copyright (c) 2013, 2020 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.glassfish.tests.hk2.cdi</groupId>
        <artifactId>ear</artifactId>
        <version>6.0.0-SNAPSHOT</version>
    </parent>

    <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
    <artifactId>app</artifactId>
    <packaging>ear</packaging>

    <name>HK2 CDI EAR Test EAR</name>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <configuration>
                    <modules>
                        <webModule>
                            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
                            <artifactId>war1</artifactId>
                            <bundleFileName>war1.war</bundleFileName>
                        </webModule>
                        <webModule>
                            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
                            <artifactId>war2</artifactId>
                            <bundleFileName>war2.war</bundleFileName>
                        </webModule>
                        <ejbModule>
                            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
                            <artifactId>ejb1</artifactId>
                            <bundleFileName>ejb1.jar</bundleFileName>
                        </ejbModule>
                        <ejbModule>
                            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
                            <artifactId>ejb2</artifactId>
                            <bundleFileName>ejb2.jar</bundleFileName>
                        </ejbModule>
                        <jarModule>
                            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
                            <artifactId>lib1</artifactId>
                            <bundleDir>lib</bundleDir>
                            <bundleFileName>lib1.jar</bundleFileName>
                        </jarModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
            <artifactId>lib1</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
            <artifactId>ejb1</artifactId>
            <type>ejb</type>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
            <artifactId>ejb2</artifactId>
            <type>ejb</type>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
            <artifactId>war1</artifactId>
            <type>war</type>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tests.hk2.cdi.ear</groupId>
            <artifactId>war2</artifactId>
            <type>war</type>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>jakarta.ejb</groupId>
            <artifactId>jakarta.ejb-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.transaction</groupId>
            <artifactId>jakarta.transaction-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
