开放API代码生成器Maven插件使用旧的Swagger 2注释而不是Swagger 3注释

Mic*_* Dz 16 spring maven swagger openapi openapi-generator

我正在使用 Open API 代码生成器 Maven 插件从文件生成 Open API 3.0。我在我的 pom.xml 中使用这个插件:

<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>
Run Code Online (Sandbox Code Playgroud)

该插件生成 API 时没有任何问题,但它不使用 Swagger v3 注释,而是使用旧的 Swagger 注释。例如,参数使用 进行注释@ApiParam,而@Parameter应使用io.swagger.v3.oas.annotations包中的注释:

default ResponseEntity<Fault> getFault(@ApiParam(value = "",required=true) @PathVariable("jobId") String jobId) {
Run Code Online (Sandbox Code Playgroud)

因此,最新的 Swagger UI 无法正确显示文档。当我使用 swagger.v3 注释创建端点时,Swagger UI 可以正常工作。

根据官方网站https://openapi-generator.tech/docs/plugins/,我应该包含这个依赖项:

<dependency>
    <groupId>io.swagger.parser.v3</groupId>
    <artifactId>swagger-parser</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但即使有这种依赖性,插件仍然会生成带有旧注释的源。

如何强制 Open API 代码生成器使用 Swagger v3 注释?

小智 8

目前不支持 V3 注释。

您需要覆盖胡子模板。

检查这些 PR:
https://github.com/OpenAPITools/openapi-generator/pull/4779
https://github.com/OpenAPITools/openapi-generator/pull/6306

更多信息:
https://github.com/OpenAPITools/openapi-generator/issues/6108
https://github.com/OpenAPITools/openapi-generator/issues/5803

您可以使用上面 PR 中的升级模板,或者等待合并。

  • 最新版本(版本 5.3.1)合并了此 https://github.com/OpenAPITools/openapi-generator/pull/9775 Spring 代码生成器现在支持 v3 注释 -- 我在实际项目中使用它 --但我不是100%满意(我还有一些模板修改) (2认同)