You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过openapi-generator-maven-plugin生成OpenAPI YAML?求非Spring替代方案

关于从带注解源码生成OpenAPI YAML的方案解答

核心问题确认

openapi-generator-maven-plugin 确实不支持直接从带注解的源代码生成OpenAPI YAML。该插件的核心定位是基于已有的OpenAPI规范文件(通过input-spec指定)反向生成代码、客户端SDK或文档,从源码到规范的正向生成不在其功能覆盖范围内。

非Spring架构下的可行替代方案

1. JAX-RS + Swagger Core

如果你的项目基于JAX-RS规范(比如使用Jersey、RESTEasy等框架),Swagger Core可以直接扫描代码中的JAX-RS注解(@Path、@GET、@POST)和Swagger专属注解(@Api、@ApiOperation、@ApiParam)来生成OpenAPI规范。

  • 操作步骤:
    • 引入swagger-core、swagger-jaxrs相关依赖
    • 编写一个简单的Java类,通过Swagger类和APIReader扫描指定包下的API类,生成OpenAPI对象
    • 使用Yaml.mapper().writeValue()将OpenAPI对象序列化为YAML文件
    • 可以通过maven-exec-plugin在构建阶段调用这个类自动生成规范

2. 注解处理器(Annotation Processor)

利用Java注解处理器机制,在编译阶段扫描源码中的API注解,自动生成OpenAPI YAML:

  • 可以自定义注解处理器,扫描项目中自定义的API注解或通用的OpenAPI注解(@OpenAPIDefinition、@Operation),收集接口路径、参数、响应等元数据,构建OpenAPI模型后输出为YAML
  • 也可以使用现成的注解处理器库,配置后在编译阶段自动生成规范文件

3. 代码解析工具自定义生成

使用JavaParser等代码解析库编写脚本,直接扫描项目源码文件:

  • 解析类、方法的定义和注解,手动提取API的路径、请求方法、参数类型、响应模型等信息
  • 基于这些信息构建符合OpenAPI规范的Java对象,再序列化为YAML文件
  • 这种方式灵活性极高,适合非标准API架构的项目,但需要自行实现扫描和模型构建逻辑

4. 运行时API录制生成

如果项目可以本地运行或已部署,通过API工具录制请求后生成规范:

  • 使用Postman、Insomnia等工具发送所有API请求,录制请求详情
  • 利用工具的导出功能,将录制的请求转换为OpenAPI YAML
  • 注意:生成的规范可能缺少部分元数据(比如参数说明、响应模型的详细定义),需要手动补充完善

内容的提问来源于stack exchange,提问作者N4zroth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:55:26