blob: 5b567ae81f081ffff322d6ef87905044a8c9af02 [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<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.apache.felix</groupId>
<artifactId>felix-parent</artifactId>
<version>9</version>
<relativePath>../../pom/pom.xml</relativePath>
</parent>
<name>Apache Felix Http Jetty</name>
<description>This is an implementation of the R8.1 OSGi Servlet Service, the R7 OSGi Http Service and the R7 OSGi Http Whiteboard Specification</description>
<artifactId>org.apache.felix.http.jetty12</artifactId>
<version>1.0.6</version>
<packaging>bundle</packaging>
<scm>
<connection>scm:git:https://github.com/apache/felix-dev.git</connection>
<developerConnection>scm:git:https://github.com/apache/felix-dev.git</developerConnection>
<url>https://gitbox.apache.org/repos/asf?p=felix-dev.git</url>
<tag>org.apache.felix.http.jetty12-1.0.6</tag>
</scm>
<properties>
<felix.java.version>17</felix.java.version>
<jetty.version>12.0.8</jetty.version>
<baseline.skip>true</baseline.skip>
<org.ops4j.pax.exam.version>4.13.3</org.ops4j.pax.exam.version>
<!-- To debug the pax process, override this with -D -->
<pax.vm.options>-Xmx512M</pax.vm.options>
</properties>
<build>
<plugins>
<!-- Use a groovy script to preserve the META-INF/services/* files for the artifacts that are embeded in the uber jar -->
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>groovy-magic</id>
<phase>prepare-package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source><![CDATA[
// make an output dir for the merged resource files
def slDir = new File(project.build.directory, "serviceloader-resources");
slDir.mkdirs();
// scan each of the artifacts to preserve the information found in any META-INF/services/* files
project.artifacts.each() { artifact ->
if (artifact.getArtifactHandler().isAddedToClasspath() && !org.apache.maven.artifact.Artifact.SCOPE_TEST.equals( artifact.getScope() )
&& !"org.eclipse.jetty.websocket".equals(artifact.getGroupId()) // skip the optional websocket artifacts
&& !"org.eclipse.jetty.ee10.websocket".equals(artifact.getGroupId()) // skip the optional websocket artifacts
&& !"jetty-annotations".equals(artifact.getArtifactId()) // skip the transitive artifacts from the optional websocket artifacts
&& !"jetty-plus".equals(artifact.getArtifactId())
&& !"jetty-webapp".equals(artifact.getArtifactId())) {
def jar;
try {
jar = new java.util.jar.JarFile(artifact.file)
jar.stream().each() { entry ->
if (!entry.isDirectory() && entry.name.startsWith("META-INF/services/")) {
// check if we already have a file with this name
def svcFile = new File(slDir, entry.name)
def svcSet = new LinkedHashSet();
if (svcFile.exists()) {
// found existing file, so load the items from the existing file so we can merge
svcFile.eachLine { className ->
className = className.trim();
if (!className.isEmpty()) {
svcSet.add(className);
}
}
}
// read the content of the found entry
def lineReader;
try {
lineReader = new BufferedReader(new InputStreamReader(jar.getInputStream(entry), java.nio.charset.StandardCharsets.UTF_8));
def className;
while ( ( className = lineReader.readLine() ) != null ) {
className = className.trim();
if (!className.isEmpty()) {
svcSet.add(className);
}
}
} finally {
// cleanup
if (lineReader != null) {
lineReader.close()
}
}
// write the merged data to the output file
if (!svcSet.isEmpty()) {
// make any missing folders
svcFile.getParentFile().mkdirs();
svcFile.withWriter('utf-8') { writer ->
svcSet.each() { item ->
writer.writeLine item;
}
// finish up with a blank line
writer.println();
}
}
}
}
} finally {
// cleanup
if (jar != null) {
jar.close();
}
}
}
}
]]></source>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>5.1.9</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<X-Jetty-Version>
${jetty.version}
</X-Jetty-Version>
<Bundle-Activator>
org.apache.felix.http.jetty.internal.JettyActivator
</Bundle-Activator>
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
org.osgi.service.http.runtime,
org.osgi.service.http.runtime.dto,
org.osgi.service.http.whiteboard,
org.osgi.service.servlet.context,
org.osgi.service.servlet.runtime,
org.osgi.service.servlet.runtime.dto,
org.osgi.service.servlet.whiteboard,
org.eclipse.jetty.alpn.server,
org.eclipse.jetty.http.*,
org.eclipse.jetty.http2.*,
org.eclipse.jetty.io.*,
org.eclipse.jetty.jmx.*,
org.eclipse.jetty.security.*,
org.eclipse.jetty.session.*,
org.eclipse.jetty.server.*,
org.eclipse.jetty.util.*,
!org.eclipse.jetty.ee10.websocket.*,
org.eclipse.jetty.ee10.servlet.*,
org.apache.felix.http.jetty,
org.apache.felix.http.jakartawrappers,
org.apache.felix.http.javaxwrappers
</Export-Package>
<Private-Package>
org.apache.felix.http.base.*,
org.apache.felix.http.jetty.*,
org.eclipse.jetty.version
</Private-Package>
<Conditional-Package>
org.apache.commons.*
</Conditional-Package>
<Import-Package>
sun.misc;resolution:=optional,
sun.nio.ch;resolution:=optional,
javax.imageio;resolution:=optional,
javax.sql;resolution:=optional,
org.ietf.jgss;resolution:=optional,
org.osgi.service.cm;resolution:=optional;version="[1.3,2)",
org.osgi.service.event;resolution:=optional;version="[1.2,2)",
org.osgi.service.log;resolution:=optional;version="[1.3,2)",
org.osgi.service.metatype;resolution:=optional;version="[1.1,2)",
org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)",
org.osgi.service.http;version="[1.2.1,1.3)",
org.osgi.service.http.context;version="[1.1,1.2)",
org.osgi.service.http.runtime;version="[1.1,1.2)",
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
org.slf4j;version="[1.0,3.0)",
*
</Import-Package>
<DynamicImport-Package>
org.osgi.service.cm;version="[1.3,2)",
org.osgi.service.event;version="[1.2,2)",
org.osgi.service.log;version="[1.3,2)",
org.osgi.service.metatype;version="[1.4,2)"
</DynamicImport-Package>
<Provide-Capability>
osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1";
uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0";
uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.servlet.runtime.HttpServiceRuntime";
uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.runtime.HttpServiceRuntime";
uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.HttpService";
uses:="org.osgi.service.http",
osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder"
</Provide-Capability>
<Require-Capability>
osgi.contract;filter:="(&amp;(osgi.contract=JavaServlet)(version=4.0))",
osgi.contract;filter:="(&amp;(osgi.contract=JakartaServlet)(version=6.0))",
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional,
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple
</Require-Capability>
<Include-Resource>
{maven-resources},${project.build.directory}/serviceloader-resources
</Include-Resource>
<_removeheaders>
Private-Package,Conditional-Package,Include-Resource
</_removeheaders>
</instructions>
</configuration>
<executions>
<execution>
<id>bundle</id>
<phase>package</phase>
<goals>
<goal>bundle</goal>
</goals>
</execution>
<execution>
<id>baseline</id>
<goals>
<goal>baseline</goal>
</goals>
</execution>
<execution>
<id>light-bundle</id>
<goals>
<goal>bundle</goal>
</goals>
<configuration>
<classifier>light</classifier>
<instructions>
<Bundle-Name>${project.name} Light</Bundle-Name>
<Bundle-SymbolicName>${project.artifactId}.light</Bundle-SymbolicName>
<!-- We need to override this from the base configuration -->
<Conditional-Package>
foo
</Conditional-Package>
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
org.osgi.service.http.runtime,
org.osgi.service.http.runtime.dto,
org.osgi.service.http.whiteboard,
org.osgi.service.servlet.context,
org.osgi.service.servlet.runtime,
org.osgi.service.servlet.runtime.dto,
org.osgi.service.servlet.whiteboard,
org.apache.felix.http.jetty,
org.apache.felix.http.javaxwrappers,
org.apache.felix.http.jakartawrappers
</Export-Package>
<Private-Package>
org.apache.felix.http.base.*,
org.apache.felix.http.jetty.*,
</Private-Package>
<Import-Package>
org.osgi.service.cm;resolution:=optional;version="[1.3,2)",
org.osgi.service.event;resolution:=optional;version="[1.2,2)",
org.osgi.service.log;resolution:=optional;version="[1.3,2)",
org.osgi.service.metatype;resolution:=optional;version="[1.4,2)",
org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)",
org.osgi.service.http;version="[1.2.1,1.3)",
org.osgi.service.http.context;version="[1.1,1.2)",
org.osgi.service.http.runtime;version="[1.1,1.2)",
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
*
</Import-Package>
<!-- We need to override this from the base configuration to exclude the ServiceLoader capabilities -->
<Provide-Capability>
osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1";
uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0";
uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.servlet.runtime.HttpServiceRuntime";
uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.runtime.HttpServiceRuntime";
uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.HttpService";
uses:="org.osgi.service.http"
</Provide-Capability>
<!-- We need to override this from the base configuration to exclude the ServiceLoader capabilities -->
<Require-Capability>
osgi.contract;filter:="(&amp;(osgi.contract=JavaServlet)(version=4.0))",
osgi.contract;filter:="(&amp;(osgi.contract=JakartaServlet)(version=6.0))"
</Require-Capability>
<!-- We need to override this from the base configuration to exclude the ServiceLoader resources -->
<Include-Resource>
{maven-resources}
</Include-Resource>
<_removeheaders>
X-Jetty-Version,Private-Package,Conditional-Package,Include-Resource
</_removeheaders>
</instructions>
</configuration>
</execution>
<execution>
<id>with-jetty-websockets</id>
<goals>
<goal>bundle</goal>
</goals>
<configuration>
<classifier>with-jetty-websockets</classifier>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<X-Jetty-Version>
${jetty.version}
</X-Jetty-Version>
<Bundle-Activator>
org.apache.felix.http.jetty.internal.JettyActivator
</Bundle-Activator>
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
org.osgi.service.http.runtime,
org.osgi.service.http.runtime.dto,
org.osgi.service.http.whiteboard,
org.osgi.service.servlet.context,
org.osgi.service.servlet.runtime,
org.osgi.service.servlet.runtime.dto,
org.osgi.service.servlet.whiteboard,
org.eclipse.jetty.alpn.server,
org.eclipse.jetty.http.*,
org.eclipse.jetty.http2.*,
org.eclipse.jetty.io.*,
org.eclipse.jetty.jmx.*,
org.eclipse.jetty.security.*,
org.eclipse.jetty.session.*,
org.eclipse.jetty.server.*,
org.eclipse.jetty.util.*,
org.eclipse.jetty.ee10.servlet.*,
!org.eclipse.jetty.ee10.websocket.jakarta.*,
org.eclipse.jetty.ee10.websocket.*,
org.eclipse.jetty.websocket.*,
org.apache.felix.http.jetty,
org.apache.felix.http.jakartawrappers,
org.apache.felix.http.javaxwrappers
</Export-Package>
<Private-Package>
org.apache.felix.http.base.*,
org.apache.felix.http.jetty.*,
org.eclipse.jetty.version
</Private-Package>
<Conditional-Package>
org.apache.commons.*
</Conditional-Package>
<Import-Package>
org.eclipse.jetty.client;resolution:=optional,
sun.misc;resolution:=optional,
sun.nio.ch;resolution:=optional,
javax.imageio;resolution:=optional,
javax.sql;resolution:=optional,
org.ietf.jgss;resolution:=optional,
org.osgi.service.cm;resolution:=optional;version="[1.3,2)",
org.osgi.service.event;resolution:=optional;version="[1.2,2)",
org.osgi.service.log;resolution:=optional;version="[1.3,2)",
org.osgi.service.metatype;resolution:=optional;version="[1.1,2)",
org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)",
org.osgi.service.http;version="[1.2.1,1.3)",
org.osgi.service.http.context;version="[1.1,1.2)",
org.osgi.service.http.runtime;version="[1.1,1.2)",
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
org.slf4j;version="[1.0,3.0)",
*
</Import-Package>
<DynamicImport-Package>
org.osgi.service.cm;version="[1.3,2)",
org.osgi.service.event;version="[1.2,2)",
org.osgi.service.log;version="[1.3,2)",
org.osgi.service.metatype;version="[1.4,2)"
</DynamicImport-Package>
<Provide-Capability>
osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1";
uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0";
uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.servlet.runtime.HttpServiceRuntime";
uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.runtime.HttpServiceRuntime";
uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.HttpService";
uses:="org.osgi.service.http",
osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder"
</Provide-Capability>
<Require-Capability>
osgi.contract;filter:="(&amp;(osgi.contract=JavaServlet)(version=4.0))",
osgi.contract;filter:="(&amp;(osgi.contract=JakartaServlet)(version=6.0))",
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional,
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple
</Require-Capability>
<Include-Resource>
{maven-resources},${project.build.directory}/serviceloader-resources
</Include-Resource>
<_removeheaders>
Private-Package,Conditional-Package,Include-Resource
</_removeheaders>
</instructions>
</configuration>
</execution>
<execution>
<id>with-jakarta-websockets</id>
<goals>
<goal>bundle</goal>
</goals>
<configuration>
<classifier>with-jakarta-websockets</classifier>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<X-Jetty-Version>
${jetty.version}
</X-Jetty-Version>
<Bundle-Activator>
org.apache.felix.http.jetty.internal.JettyActivator
</Bundle-Activator>
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
org.osgi.service.http.runtime,
org.osgi.service.http.runtime.dto,
org.osgi.service.http.whiteboard,
org.osgi.service.servlet.context,
org.osgi.service.servlet.runtime,
org.osgi.service.servlet.runtime.dto,
org.osgi.service.servlet.whiteboard,
org.eclipse.jetty.alpn.server,
org.eclipse.jetty.http.*,
org.eclipse.jetty.http2.*,
org.eclipse.jetty.io.*,
org.eclipse.jetty.jmx.*,
org.eclipse.jetty.security.*,
org.eclipse.jetty.session.*,
org.eclipse.jetty.server.*,
org.eclipse.jetty.util.*,
!org.eclipse.jetty.ee10.websocket.server.*,
!org.eclipse.jetty.ee10.websocket.servlet.*,
org.eclipse.jetty.ee10.websocket.jakarta.*,
org.eclipse.jetty.ee10.servlet.*,
org.eclipse.jetty.websocket.*,
org.apache.felix.http.jetty,
org.apache.felix.http.jakartawrappers,
org.apache.felix.http.javaxwrappers
</Export-Package>
<Private-Package>
org.apache.felix.http.base.*,
org.apache.felix.http.jetty.*,
org.eclipse.jetty.version
</Private-Package>
<Conditional-Package>
org.apache.commons.*
</Conditional-Package>
<Import-Package>
org.eclipse.jetty.client;resolution:=optional,
sun.misc;resolution:=optional,
sun.nio.ch;resolution:=optional,
javax.imageio;resolution:=optional,
javax.sql;resolution:=optional,
org.ietf.jgss;resolution:=optional,
org.osgi.service.cm;resolution:=optional;version="[1.3,2)",
org.osgi.service.event;resolution:=optional;version="[1.2,2)",
org.osgi.service.log;resolution:=optional;version="[1.3,2)",
org.osgi.service.metatype;resolution:=optional;version="[1.1,2)",
org.osgi.service.useradmin;resolution:=optional;version="[1.1,2)",
org.osgi.service.http;version="[1.2.1,1.3)",
org.osgi.service.http.context;version="[1.1,1.2)",
org.osgi.service.http.runtime;version="[1.1,1.2)",
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
org.slf4j;version="[1.0,3.0)",
*
</Import-Package>
<DynamicImport-Package>
org.osgi.service.cm;version="[1.3,2)",
org.osgi.service.event;version="[1.2,2)",
org.osgi.service.log;version="[1.3,2)",
org.osgi.service.metatype;version="[1.4,2)"
</DynamicImport-Package>
<Provide-Capability>
osgi.implementation;osgi.implementation="osgi.http";version:Version="1.1";
uses:="javax.servlet,javax.servlet.http,org.osgi.service.http.context,org.osgi.service.http.whiteboard",
osgi.implementation;osgi.implementation="osgi.http";version:Version="2.0";
uses:="jakarta.servlet,jakarta.servlet.http,org.osgi.service.servlet.context,org.osgi.service.servlet.whiteboard",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.servlet.runtime.HttpServiceRuntime";
uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.runtime.HttpServiceRuntime";
uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
osgi.service;objectClass:List&lt;String&gt;="org.osgi.service.http.HttpService";
uses:="org.osgi.service.http",
osgi.serviceloader;osgi.serviceloader="org.eclipse.jetty.http.HttpFieldPreEncoder"
</Provide-Capability>
<Require-Capability>
osgi.contract;filter:="(&amp;(osgi.contract=JavaServlet)(version=4.0))",
osgi.contract;filter:="(&amp;(osgi.contract=JakartaServlet)(version=6.0))",
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)";resolution:=optional,
osgi.extender;filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.http.HttpFieldPreEncoder)";resolution:=optional;cardinality:=multiple,
osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.jetty.io.ssl.ALPNProcessor$Server)";resolution:=optional;cardinality:=multiple
</Require-Capability>
<Include-Resource>
{maven-resources},${project.build.directory}/serviceloader-resources
</Include-Resource>
<_removeheaders>
Private-Package,Conditional-Package,Include-Resource
</_removeheaders>
</instructions>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
<!-- plugins for paxexam integration tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<phase>integration-test</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<systemPropertyVariables>
<jetty.version>${jetty.version}</jetty.version>
<bundle.filename>${basedir}/target/${project.build.finalName}.jar</bundle.filename>
<pax.vm.options>${pax.vm.options}</pax.vm.options>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.cm</artifactId>
<version>1.5.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.event</artifactId>
<version>1.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.metatype</artifactId>
<version>1.4.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.useradmin</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee10</groupId>
<artifactId>jetty-ee10-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>jetty-http2-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>jetty-http2-common</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>jetty-http2-hpack</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee10.websocket</groupId>
<artifactId>jetty-ee10-websocket-jakarta-server</artifactId>
<version>${jetty.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee10.websocket</groupId>
<artifactId>jetty-ee10-websocket-jetty-server</artifactId>
<version>${jetty.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>jetty-websocket-jetty-server</artifactId>
<version>${jetty.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-session</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.servlet</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.http</artifactId>
<version>1.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.http.whiteboard</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.base</artifactId>
<version>5.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.wrappers</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.5</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.log</artifactId>
<version>1.3.0</version>
<scope>test</scope>
</dependency>
<!-- an OSGi framework -->
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>7.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>test</scope>
</dependency>
<!-- Pax Exam -->
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-cm</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-container-forked</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-junit4</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-link-mvn</artifactId>
<version>${org.ops4j.pax.exam.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>jetty-websocket-jetty-client</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>4.2.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>