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

eqqqjvef  于 2022-11-06  发布在  Maven
关注(0)|答案(2)|浏览(200)

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

<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>

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

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

因此,最新的Swagger UI不能正确显示文档。当我使用swagger.v3注解创建一个端点时,Swagger UI工作正常。
根据官方网站https://openapi-generator.tech/docs/plugins/,我应该包括这个依赖项:

<dependency>
    <groupId>io.swagger.parser.v3</groupId>
    <artifactId>swagger-parser</artifactId>
</dependency>

但是即使有了这种依赖性,插件仍然会生成带有旧注解的源代码。
我如何强制Open API代码生成器使用Swagger v3注解?

iklwldmw

iklwldmw2#

现在发布了5.3.1版本的插件,我使用了来自https://github.com/OpenAPITools/openapi-generator/pull/9775https://github.com/OpenAPITools/openapi-generator/issues/6108的信息来使它为我工作。
我在pom.xml中添加了三个configOptions:

<plugin>
  <groupId>org.openapitools</groupId>
  <artifactId>openapi-generator-maven-plugin</artifactId>
  <version>5.3.1</version>
  <configuration>
    <!-- other config omitted -->
    <configOptions>
      <oas3>true</oas3>
      <useSpringController>true</useSpringController>
      <useSpringfox>false</useSpringfox>
    </configOptions>
  </configuration>
</plugin>

之后,可能需要添加另一个依赖项作为解决方法,因为插件会将未使用的导入添加到生成的代码中。

<dependency>
  <!-- try to remove this dependency when a new version (5.3.1+) of the openapi-generator plugin is available -->
  <groupId>io.swagger</groupId>
  <artifactId>swagger-annotations</artifactId>
  <version>1.6.3</version>
</dependency>

我使用的是springdoc-openapi-ui依赖项。

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>1.6.3</version>
</dependency>

相关问题