2020 年项目使用 Rap2 维护接口文档时,我尝试了 JApiDocs 1.3,希望减少重复编辑文档和控制器注解的工作。它从 Java 源码、类型和注释提取信息,但这也带来了源码可见范围的限制。
当时使用的依赖与配置
历史依赖为:
<dependency>
<groupId>io.github.yedaxia</groupId>
<artifactId>japidocs</artifactId>
<version>1.3</version>
</dependency>
这只是还原当时试用版本,不是当前依赖推荐。对应配置形式:
DocsConfig config = new DocsConfig();
config.setProjectPath("/path/to/project/src");
config.setProjectName("Example API");
config.setApiVersion("V1.0");
config.setDocsPath("/path/to/generated-api-docs");
config.setAutoGenerate(Boolean.TRUE);
Docs.buildHtmlDocs(config);
Docs 与 DocsConfig 来自 io.github.yedaxia.apidocs;路径需换成实际源码和专用输出目录。生成过程会写文件,不要指向需要保留的普通文档目录。实际 API 与目录处理仍应按安装版本核对。JApiDocs 项目说明
这类生成任务更适合受控开发或构建流程,不必每次生产应用启动都生成一遍。
根目录没有结果,src 才找到接口
当时将 projectPath 指向工程根目录,生成接口内容为空;改成该工程的 src 后解析成功。这说明必须检查工具真正扫描到了哪些源码,不能假定它自动理解所有 Maven 模块与构建布局。
这是一份特定工程的观察,不是断言所有版本都必须以 src 结尾。
外部 JAR 与 Object 暴露了边界
当前源码树中的 POJO 能够展开字段,但 common 模块以 JAR 提供的模型没有正常解析;返回 Object 也缺少具体结构信息,String 则能生成相应描述。
源代码解析需要能看到模型定义与注释,单凭编译后的类并不能恢复原来的注释。因此,无注解不意味着无需维护类型和注释,也不保证自动覆盖多模块、泛型包装和统一响应体。
生成后仍要与真实接口对照
先选择一个普通 POJO、一个跨模块 DTO 和一个集合或包装响应,比较生成结果与真实请求/响应。缺字段或类型时,先检查扫描范围和工具能力,不要为适配文档工具就把真实接口改成不准确的 String。
这次试用的结论是:减少注解有价值,但应先验证项目常见类型能否正确表达。它不是对当前版本能力或其他文档方案的统一评价。