<?xml version="1.0" encoding="UTF-8"?>
<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.eclipse.jetty.tests</groupId>
    <artifactId>test-servlet-spec-parent</artifactId>
    <version>9.4.58.v20250814</version>
  </parent>
  <name>Jetty Tests :: Webapps :: Spec Webapp</name>
  <artifactId>test-spec-webapp</artifactId>
  <packaging>war</packaging>
  <properties>
    <bundle-symbolic-name>${project.groupId}.spec</bundle-symbolic-name>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>src/main/assembly/config.xml</descriptor>
                <descriptor>src/main/assembly/web-bundle.xml</descriptor>
              </descriptors>
              <archive>
                <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
              </archive>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- also make this webapp an osgi bundle -->
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
          <webResources>
            <resource>
              <directory>target</directory>
              <includes>
                <include>plugin-context.xml</include>
              </includes>
              <targetPath>META-INF</targetPath>
            </resource>
          </webResources>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <supportedProjectTypes>
            <supportedProjectType>war</supportedProjectType>
          </supportedProjectTypes>
          <instructions>
            <Bundle-SymbolicName>org.eclipse.jetty.tests.test-spec-webapp</Bundle-SymbolicName>
            <Bundle-Description>Test Webapp for Servlet 3.1 Features</Bundle-Description>
            <Import-Package>
              javax.transaction*;version="[1.1,1.3)", com.acme;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}", *
            </Import-Package>
            <_nouses />
            <Export-Package>com.acme.test;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}";-noimport:=true</Export-Package>
            <Web-ContextPath>/</Web-ContextPath>
            <Bundle-ClassPath>.,WEB-INF/classes,WEB-INF/lib</Bundle-ClassPath>
            <Jetty-ContextFilePath>/META-INF/plugin-context.xml</Jetty-ContextFilePath>
          </instructions>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-xml-files</id>
            <phase>process-resources</phase>
            <configuration>
              <target>
                <concat destfile="${project.build.directory}/plugin-context.xml">
                  <filelist dir="src/main/templates/" files="plugin-context-header.xml,env-definitions.xml" />
                </concat>
                <concat destfile="${project.build.directory}/test-spec.xml">
                  <filelist dir="src/main/templates/" files="annotations-context-header.xml,env-definitions.xml" />
                </concat>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.eclipse.jetty.tests</groupId>
                  <artifactId>test-mock-resources</artifactId>
                  <version>${project.version}</version>
                  <type>jar</type>
                  <includes>**</includes>
                  <overWrite>true</overWrite>
                  <outputDirectory>${project.build.directory}/lib/jndi</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${project.version}</version>
        <configuration>
          <scanIntervalSeconds>10</scanIntervalSeconds>
          <useTestClasspath>true</useTestClasspath>
          <webAppXml>${project.build.directory}/plugin-context.xml</webAppXml>
          <webAppConfig>
            <war>src/main/webapp</war>
            <descriptor>src/main/webapp/WEB-INF/web.xml</descriptor>
            <contextPath>/test-spec</contextPath>
            <containerIncludeJarPattern>.*/javax.servlet-[^/]*\.jar$</containerIncludeJarPattern>
            <configurationDiscovered>true</configurationDiscovered>
            <jettyEnvXml>${basedir}/src/main/webapp/WEB-INF/jetty-env.xml</jettyEnvXml>
          </webAppConfig>
          <loginServices>
            <loginService implementation="org.eclipse.jetty.security.HashLoginService">
              <name>Test Realm</name>
              <config>src/etc/realm.properties</config>
            </loginService>
          </loginServices>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.eclipse.jetty.tests</groupId>
            <artifactId>test-mock-resources</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-java</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireUpperBoundDeps>
                  <excludes combine.children="append">
                    <exclude>org.eclipse.jetty:jetty-util</exclude>
                  </excludes>
                </requireUpperBoundDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>javax.transaction-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty.tests</groupId>
      <artifactId>test-web-fragment</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty.tests</groupId>
      <artifactId>test-container-initializer</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</project>
