You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "paulrutter (via GitHub)" <gi...@apache.org> on 2026/08/27 22:00:22 UTC
[PR] FELIX-6857 maven-bundle-plugin: do not embed type=pom dependencies [felix-dev]
paulrutter opened a new pull request, #549:
URL: https://github.com/apache/felix-dev/pull/549
https://issues.apache.org/jira/browse/FELIX-6857
## Problem
When a bundle uses `Embed-Dependency` and one of the selected dependencies is a
`type=pom` artifact (a BOM/aggregator declared as a compile dependency),
`DependencyEmbedder` adds that artifact's `.pom` file to the bundle classpath
(`Bundle-ClassPath` / `-includeresource`). bnd's CDI-annotations analyzer then tries
to open the `.pom` as a JAR/ZIP and fails:
- **maven-bundle-plugin 6.0.2** (embeds bnd 7.0.0): emits `[WARNING] Invalid bundle
classpath entry` and **builds successfully**.
- **maven-bundle-plugin 6.1.0** (embeds bnd 7.3.0): the same condition is now a fatal
`[ERROR] Error(s) found in bundle configuration` and **fails the build**.
So upgrading the plugin breaks any bundle that embeds a pom-type dependency.
```
[ERROR] Bundle ... : Analyzer Plugin CDIAnnotations failed The JAR/ZIP file
(.../org/junit/junit-bom/5.11.3/junit-bom-5.11.3.pom) seems corrupted,
error: zip END header not found -> zip END header not found for AnalyzerPlugin
[ERROR] Error(s) found in bundle configuration
```
The `.pom` is valid XML, not corrupt — bnd is simply being handed a pom to open as an
archive.
## Root cause
`DependencyEmbedder` embeds any selected artifact whose file exists, without checking
its type, so a `type=pom` dependency's `.pom` file ends up on the classpath. A pom
contains no classes and must never be on the bundle classpath.
The underlying hard-fail is a bnd 7.0.0 → 7.3.0 behaviour change in
`aQute.bnd.cdi.CDIAnnotations#analyzeJar` (a warning promoted to a fatal error), but the
plugin should never have placed the `.pom` there in the first place.
## Fix
Skip `type=pom` artifacts in `DependencyEmbedder`, covering both the embed and inline
paths, logging a warning so it is not silent. The non-embed classpath path in
`BundlePlugin.getClasspath()` already excludes poms via
`ArtifactHandler.isAddedToClasspath()`, so only the embed path needed the guard.
## Reproducer
```xml
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.11.3</version>
<type>pom</type>
</dependency>
</dependencies>
```
`<Embed-Dependency>*;scope=compile</Embed-Dependency>`
mvn clean package fails on 6.1.0, succeeds on 6.0.2 (and with this fix).
## Testing
Added BundlePluginTest#testEmbedDependencyExcludesPomArtifacts, asserting a pom
dependency is excluded from Bundle-ClassPath and Embedded-Artifacts while a
regular jar is still embedded. Fails without the fix, passes with it.
Added an embed-pom-dependency integration test (a type=pom dependency alongside a
jar dependency). The build fails without the fix (the CDIAnnotations error above) and
passes with it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@felix.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] FELIX-6857 maven-bundle-plugin: do not embed type=pom dependencies [felix-dev]
Posted by "paulrutter (via GitHub)" <gi...@apache.org>.
paulrutter merged PR #549:
URL: https://github.com/apache/felix-dev/pull/549
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@felix.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org