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

    Copyright (c) 2011, 2024 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Distribution License v. 1.0, which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: BSD-3-Clause

-->

<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.examples</groupId>
        <artifactId>webapp-example-parent</artifactId>
        <relativePath>../webapp-example-parent/pom.xml</relativePath>
        <version>4.0-M1-GF1</version>
    </parent>

    <artifactId>servlet3-webapp</artifactId>
    <packaging>war</packaging>
    <name>jersey-examples-servlet3-webapp</name>

    <description>Jersey Servlet 3 example with missing servlet-class in the web.xml file</description>

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

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-compiler-plugin</artifactId>-->
<!--            </plugin>-->
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-surefire-plugin</artifactId>-->
<!--            </plugin>-->
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-failsafe-plugin</artifactId>-->
<!--            </plugin>-->
            <plugin>
                <groupId>org.eclipse.jetty.ee10</groupId>
                <artifactId>jetty-ee10-maven-plugin</artifactId>
                <configuration>
<!--                    <skip>${skip.tests}</skip>-->
<!--                    <stopWait>10</stopWait>-->
<!--                    <stopPort>9999</stopPort>-->
<!--                    <stopKey>STOP</stopKey>-->
                    <httpConnector>
                        <port>${jersey.config.test.container.port}</port>
<!--                        <idleTimeout>60000</idleTimeout>-->
                    </httpConnector>
                </configuration>
<!--                <configuration>-->
<!--                    <skip>${skip.tests}</skip>-->
<!--                    <scanIntervalSeconds>10</scanIntervalSeconds>-->
<!--                    <stopPort>9999</stopPort>-->
<!--                    <stopKey>STOP</stopKey>-->
<!--                    <webApp>-->
<!--                        <contextPath>/</contextPath>-->
<!--                        <webInfIncludeJarPattern>.*/.*jersey-[^/]\.jar$</webInfIncludeJarPattern>-->
<!--                    </webApp>-->
<!--                    <httpConnector>-->
<!--                        <port>${jersey.config.test.container.port}</port>-->
<!--                        <idleTimeout>60000</idleTimeout>-->
<!--                    </httpConnector>-->
<!--                </configuration>-->
<!--                <executions>-->
<!--                    <execution>-->
<!--                        <id>start-jetty</id>-->
<!--                        <phase>pre-integration-test</phase>-->
<!--                        <goals>-->
<!--                            <goal>run</goal>-->
<!--                        </goals>-->
<!--                        <configuration>-->
<!--                            <scanIntervalSeconds>0</scanIntervalSeconds>-->
<!--                        </configuration>-->
<!--                    </execution>-->
<!--                    <execution>-->
<!--                        <id>stop-jetty</id>-->
<!--                        <phase>post-integration-test</phase>-->
<!--                        <goals>-->
<!--                            <goal>stop</goal>-->
<!--                        </goals>-->
<!--                    </execution>-->
<!--                </executions>-->
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>pre-release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>xml-maven-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <properties>
        <jersey.config.test.container.port>9998</jersey.config.test.container.port>
    </properties>

</project>
