You need to enable JavaScript to run this app. Quarkus OpenAPI扩展:如何在构建阶段获取生成的OpenAPI YAML文件
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus OpenAPI扩展:如何在构建阶段获取生成的OpenAPI YAML文件

Quarkus 构建期零服务启动生成OpenAPI YAML的实现方案

Quarkus SmallRye OpenAPI扩展原生支持构建阶段直接生成OpenAPI规格文件,全程不需要启动应用服务,生成的YAML内容和启动后访问/q/openapi端点拿到的结果完全一致,完全适配CI流程中给客户端代码生成器当输入的需求。

具体落地方式

临时单次生成

只要项目已经正常引入quarkus-smallrye-openapi扩展,直接在编译命令里加参数就能触发生成,不需要启服务:

  • Maven项目执行:
    ./mvnw compile -Dquarkus.openapi.generate.files=true
  • Gradle项目执行:
    ./gradlew compileJava -Dquarkus.openapi.generate.files=true
    生成的默认路径:Maven环境下在target/generated/openapi/目录,Gradle环境下在build/generated/openapi/目录,直接就能拿到完整的openapi.yaml文件。

适配CI流程的固化配置

如果不想每次构建都手动加参数,直接把生成逻辑写进项目配置,让常规构建动作自动产出文件就行,在application.properties里加对应配置:

# 开启构建期自动生成OpenAPI文件
quarkus.openapi.generate.files=true
# 自定义输出路径,方便CI脚本直接定位(可选)
quarkus.openapi.output.directory=./ci/openapi

配完之后,不管是本地跑mvn package还是CI流程里的常规构建步骤,都会在编译环节直接把YAML文件生成到指定路径,完全不需要穿插启动服务拉取文件的冗余步骤。

注意事项

  • 构建期生成的规格和运行时端点返回的内容没有差异,背后走的是同一套注解扫描、配置合并、自定义定制逻辑的链路,不会出现内容不一致的问题。
  • 整个生成过程是离线编译阶段的处理逻辑,不会启动服务端口、不会触发应用上下文的服务监听,不会出现CI环境下端口占用、启动超时这类常见问题,生成速度比启服务拉取快很多。
  • 如果项目里有自定义的OpenAPI规格修改逻辑(比如拦截器动态调整参数、引用外部规格片段),这类逻辑在构建期生成时会正常执行,不需要额外改造。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 18:36:06