fix: Enable javadoc generation for modules with OSGi metadata #705
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
DISCLAIMER: As part of an effort to publish API docs for all official MCP SDKs, I am trying to fix publishing of this SDK's Javadoc to javadoc.io. However, I am not a Java developer, and do not have a full understanding of the reason publishing is currently broken. This solution was written by Claude Code after a long conversation with me, but I am relying on the maintainers to judge whether it is a proper solution.
Problem:
The javadoc JARs published to Maven Central for
mcp-coreand other modules contain no HTML documentation (onlyMETA-INFdirectory structure). This prevents javadoc.io from automatically displaying API documentation for these modules.Root cause:
The
bnd-maven-pluginadds anAutomatic-Module-Nameentry to the JAR manifest for OSGi compatibility. Whenmaven-javadoc-plugindetects 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-pathand--patch-moduleinstead of-sourcepath), which fail to generate HTML output for automatic modules.Considered solutions:
Remove
Automatic-Module-Namefrom the manifestAdd
legacyMode=truetomaven-javadoc-pluginlegacyModewhen automatic module detection causes build issuesImplementation:
maven-javadoc-pluginfrom3.5.0to3.11.2(legacyModeadded in3.6.0)<legacyMode>true</legacyMode>to force classpath-based generationBoth 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-coreand other modules usingbnd-maven-plugin.🤖 Generated with Claude Code