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

    <parent>
        <groupId>org.glassfish.jersey.tests.integration</groupId>
        <artifactId>project</artifactId>
        <version>2.28-RC3</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <artifactId>cdi-multimodule-ear</artifactId>
    <packaging>ear</packaging>
    <name>jersey-tests-integration-cdi-multimodule-ear</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <configuration>
                    <version>6</version>
                    <defaultLibBundleDir>APP-INF/lib</defaultLibBundleDir>
                    <modules>
                        <webModule>
                            <groupId>org.glassfish.jersey.tests.integration</groupId>
                            <artifactId>cdi-multimodule-war1</artifactId>
                        </webModule>
                         <webModule>
                            <groupId>org.glassfish.jersey.tests.integration</groupId>
                            <artifactId>cdi-multimodule-war2</artifactId>
                        </webModule>
                        <jarModule>
                            <groupId>org.glassfish.jersey.tests.integration</groupId>
                            <artifactId>cdi-multimodule-lib</artifactId>
                        </jarModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.tests.integration</groupId>
            <artifactId>cdi-multimodule-war1</artifactId>
            <type>war</type>
            <version>${project.version}</version>
        </dependency>
         <dependency>
            <groupId>org.glassfish.jersey.tests.integration</groupId>
            <artifactId>cdi-multimodule-war2</artifactId>
            <type>war</type>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.tests.integration</groupId>
            <artifactId>cdi-multimodule-lib</artifactId>
            <type>jar</type>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
