我有一个现有的Sping Boot 2.7.5项目。我决定开始使用OpenAPI来构建项目的其余API。
我的OpenAPI规范是3.0.3版
我将以下内容添加到我的pom文件中以生成服务器代码:
生成插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>6.4.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>
${project.basedir}/src/main/resources/openapi.yaml
</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>com.xxx.yyy.zzz.api</apiPackage>
<modelPackage>com.xxx.yyy.zzz.model</modelPackage>
<supportingFilesToGenerate>
ApiUtil.java
</supportingFilesToGenerate>
<configOptions>
<delegatePattern>true</delegatePattern>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
依赖关系
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator</artifactId>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.1</version>
</dependency>
在这样做之后,我不断得到错误,例如:
[ERROR] Failed to execute goal [org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile [(default-compile) on project [xxx-svc: Compilation failure: Compilation failure:
[ERROR] /C:/xxx/xxx-svc/target/generated-sources/openapi/src/main/java/com/xxx/yyy/zzz/model/XxxTypeNew.java:[49,34] cannot find symbol
[ERROR] symbol: method requiredMode()
[ERROR] location: @interface io.swagger.v3.oas.annotations.media.Schema
为了解决这个问题,我添加了一个额外的依赖项:
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
<version>2.2.8</version>
</dependency>
我不明白的是为什么我必须添加这个依赖项?我如果我使用相同的版本为openapi生成器和依赖项,为什么生成的代码不会编译没有一个更多的依赖项?
如果这是一种非惯用的方式来使用OpenApi与SpringBoot,我愿意探索替代方案。
1条答案
按热度按时间vwoqyblh1#
你缺少了springfox-swagger 2依赖项,它将拉取所有的Swagger类型:
生成器基于文本模板生成Java类,它不操作Java代码,因此不需要swagger依赖项。
模板在这里找到:https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources/Java