Commit 790f862
fix: Enable javadoc generation for modules with OSGi metadata
**Problem:**
The javadoc JARs published to Maven Central for `mcp-core` and other modules
contain no HTML documentation (only `META-INF` directory structure). This
prevents javadoc.io from automatically displaying API documentation for these
modules.
**Root cause:**
The `bnd-maven-plugin` adds an `Automatic-Module-Name` entry to the JAR manifest
for OSGi compatibility. When `maven-javadoc-plugin` detects this manifest entry,
it switches from traditional classpath mode to JPMS (Java Platform Module
System) module mode. In module mode, javadoc uses different command-line
arguments (`--module-path` and `--patch-module` instead of `-sourcepath`), which
fail to generate HTML output for automatic modules.
**Considered solutions:**
1. Remove `Automatic-Module-Name` from the manifest
- Fixes javadoc generation
- Current module name already invalid for JPMS (contains dash, see #560)
- Would not break working JPMS usage (already broken)
- Removes future option to support JPMS once module name is fixed
2. Add `legacyMode=true` to `maven-javadoc-plugin`
- Forces pre-Java 9 classpath-based javadoc generation instead of module mode
- No changes to manifest (preserves invalid module name as-is)
- Maven documentation recommends `legacyMode` when automatic module detection
causes build issues
- Used by other projects with automatic modules (e.g., Apache Avro PR 3041)
**Implementation:**
- Upgraded `maven-javadoc-plugin` from `3.5.0` to `3.11.2` (`legacyMode` added
in `3.6.0`)
- Added `<legacyMode>true</legacyMode>` to force classpath-based generation
Both solutions were tested in separate git worktrees using Docker-based Maven
builds. Both produce identical javadoc output (`mcp-core`: 558 bytes → 1.4 MB,
474 HTML files). Solution 2 was chosen to avoid breaking changes.
Fixes javadoc generation for `mcp-core` and other modules using `bnd-maven-plugin`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>1 parent e6045f7 commit 790f862
1 file changed
+2
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| 282 | + | |
282 | 283 | | |
283 | 284 | | |
284 | 285 | | |
| |||
0 commit comments