You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2026/07/29 13:37:40 UTC
(felix-dev) branch feature/FELIX-6852-jetty12-pom-cleanup created (now a0567879b6)
This is an automated email from the ASF dual-hosted git repository.
paulrutter pushed a change to branch feature/FELIX-6852-jetty12-pom-cleanup
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
at a0567879b6 FELIX-6852 Clean up jetty12 pom: de-duplicate bundle instructions, enable baselining
This branch includes the following new commits:
new a0567879b6 FELIX-6852 Clean up jetty12 pom: de-duplicate bundle instructions, enable baselining
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(felix-dev) 01/01: FELIX-6852 Clean up jetty12 pom: de-duplicate bundle instructions, enable baselining
Posted by pa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
paulrutter pushed a commit to branch feature/FELIX-6852-jetty12-pom-cleanup
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
commit a0567879b6fb504fe391e8dc49aceae7e30b6c6b
Author: Paul Rütter <pa...@blueconic.com>
AuthorDate: Wed Jul 29 15:36:48 2026 +0200
FELIX-6852 Clean up jetty12 pom: de-duplicate bundle instructions, enable baselining
- De-duplicate the maven-bundle-plugin executions: the with-jetty-websockets
and with-jakarta-websockets executions now declare only the instructions that
differ from the primary bundle (Export-Package and Import-Package). All shared
instructions are inherited from the plugin-level <instructions> via Maven's
plugin/execution configuration merge, the same mechanism the light bundle
already relied on. The generated MANIFEST.MF of all four artifacts (main, light,
with-jetty-websockets, with-jakarta-websockets) is unchanged.
- Re-enable bnd baselining (baseline.skip=false). Baseline analysis passes with
0 errors against the 2.0.4 release.
- Extract the duplicated slf4j version into a <slf4j.version> property.
- Document that felix.java.version 17 is the floor (Jetty 12.1) and that virtual
threads additionally require Java 21 at runtime.
Co-Authored-By: Claude Opus 4.8 <no...@anthropic.com>
---
http/jetty12/pom.xml | 116 ++++++++++-----------------------------------------
1 file changed, 21 insertions(+), 95 deletions(-)
diff --git a/http/jetty12/pom.xml b/http/jetty12/pom.xml
index f17fdec152..6f8bcf21d4 100644
--- a/http/jetty12/pom.xml
+++ b/http/jetty12/pom.xml
@@ -41,9 +41,13 @@
</scm>
<properties>
+ <!-- Minimum required Java version. Jetty 12.1 requires Java 17, so this is the floor.
+ The optional virtual-threads support (felix.jetty.threadpool.useVirtualThreads)
+ additionally requires Java 21 at runtime and is enabled conditionally (see JettyService). -->
<felix.java.version>17</felix.java.version>
<jetty.version>12.1.11</jetty.version>
- <baseline.skip>true</baseline.skip>
+ <slf4j.version>2.0.17</slf4j.version>
+ <baseline.skip>false</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>
@@ -337,15 +341,13 @@
</goals>
<configuration>
<classifier>with-jetty-websockets</classifier>
+ <!-- Only the instructions that differ from the primary bundle are declared here.
+ Everything else (Bundle-SymbolicName, Bundle-Version, X-Jetty-Version,
+ Bundle-Activator, Private-Package, DynamicImport-Package, Provide-Capability,
+ Require-Capability, Include-Resource, _removeheaders) is inherited from the
+ plugin-level <instructions> via Maven's plugin/execution configuration merge. -->
<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>
+ <!-- Adds the Jetty-specific websocket packages on top of the primary export set -->
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
@@ -375,11 +377,7 @@
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>
+ <!-- Adds the optional org.eclipse.jetty.client import needed by the websocket bundles -->
<Import-Package>
org.eclipse.jetty.client;resolution:=optional,
sun.misc;resolution:=optional,
@@ -398,39 +396,6 @@
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
*
</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<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime";
- uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
- osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime";
- uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
- osgi.service;objectClass:List<String>="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:="(&(osgi.contract=JavaServlet)(version=4.0))",
- osgi.contract;filter:="(&(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>
@@ -441,15 +406,13 @@
</goals>
<configuration>
<classifier>with-jakarta-websockets</classifier>
+ <!-- Only the instructions that differ from the primary bundle are declared here.
+ Everything else (Bundle-SymbolicName, Bundle-Version, X-Jetty-Version,
+ Bundle-Activator, Private-Package, DynamicImport-Package, Provide-Capability,
+ Require-Capability, Include-Resource, _removeheaders) is inherited from the
+ plugin-level <instructions> via Maven's plugin/execution configuration merge. -->
<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>
+ <!-- Adds the Jakarta websocket packages on top of the primary export set -->
<Export-Package>
org.osgi.service.http,
org.osgi.service.http.context,
@@ -480,11 +443,7 @@
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>
+ <!-- Adds the optional org.eclipse.jetty.client import needed by the websocket bundles -->
<Import-Package>
org.eclipse.jetty.client;resolution:=optional,
sun.misc;resolution:=optional,
@@ -503,39 +462,6 @@
org.osgi.service.http.runtime.dto;version="[1.1,1.2)",
*
</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<String>="org.osgi.service.servlet.runtime.HttpServiceRuntime";
- uses:="org.osgi.service.servlet.runtime,org.osgi.service.servlet.runtime.dto",
- osgi.service;objectClass:List<String>="org.osgi.service.http.runtime.HttpServiceRuntime";
- uses:="org.osgi.service.http.runtime,org.osgi.service.http.runtime.dto",
- osgi.service;objectClass:List<String>="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:="(&(osgi.contract=JavaServlet)(version=4.0))",
- osgi.contract;filter:="(&(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>
@@ -584,7 +510,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>2.0.17</version>
+ <version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -826,7 +752,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
- <version>2.0.17</version>
+ <version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>