Maven Javadoc无法识别子包:提示“No source files for package”
解决Maven Javadoc不生成子包文档的问题
首先,咱们得揪出核心问题:你的源文件目录结构和Java包声明完全不匹配,这才是javadoc找不到子包的根本原因。
Java有个硬性规则:源文件的目录层级必须和包声明一一对应。比如:
- 声明
package com.personal.reader;的类,必须放在src/main/java/com/personal/reader/目录下 - 声明
package com.personal.reader.parser;的类,必须放在src/main/java/com/personal/reader/parser/目录下
但看你的项目结构,Main.java和Reader.java直接放在src/main/java/根目录下,parser目录也直接挂在src/main/java/下面,这和你代码里的包声明完全对不上,javadoc自然找不到子包的源文件。
修复步骤:
1. 修正项目目录结构(最关键)
按照包名层级重新整理你的文件:
pom.xml src/ main/ java/ com/ personal/ reader/ Main.java Reader.java parser/ Parser.java StringParser.java ByteParser.java
2. (可选)增强Javadoc插件配置(确保扫描所有包)
如果修正目录后还有问题,可以在maven-javadoc-plugin的配置里明确指定要包含的包,避免遗漏:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.0.0</version> <configuration> <outputDirectory>docs</outputDirectory> <!-- 明确指定主包和子包,用逗号分隔 --> <packages>com.personal.reader,com.personal.reader.parser</packages> <!-- 或者用通配符匹配com.personal.reader下的所有子包 --> <!-- <packages>com.personal.reader.*</packages> --> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
3. 验证修复
执行mvn clean package命令,现在javadoc应该能正确识别所有包的源文件,生成包含子包的完整文档了。
之前你尝试的package-info.java、sourceFileIncludes等配置,都解决不了目录结构不匹配的核心问题,先把目录调整正确,问题基本就能解决。
内容的提问来源于stack exchange,提问作者Silence
相关产品推荐
相关产品推荐

