我已经在Spring使用swagger code-gen从swagger.yaml文件生成了代码。
现在,我已经为我的API更新了swagger.yaml文件,并添加了一些其他HTTP操作。
是否可以在不手动合并的情况下自动更新以前生成的现有代码?
我想您正在谈论的是由代码生成器生成的控制器,然后您已经实现了。它们在每一代之后都会被覆盖,这意味着您将不得不手动合并代码以每次添加更改……这 确实很烦人 。
我能找到的最好的工作流程是使用该interfaceOnly选项在目标目录中仅生成模型和接口类,然后手动创建实现这些接口的控制器。
interfaceOnly
假设您再执行一次GET操作来更新API规范文件,并使用该新操作重新生成接口,而您只需调整控制器即可实现该新方法(使用现代IDE超级快捷),其他所有功能同样,您可以更好地控制代码(将控制器拆分到不同的文件夹等)。
这是我用于插件的配置:
<plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>2.2.3</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>./api-contract/petstore.yml</inputSpec> <language>spring</language> <configOptions> <sourceFolder>swagger</sourceFolder> <java8>true</java8> <interfaceOnly>true</interfaceOnly> </configOptions> </configuration> </execution> </executions> </plugin>
您可以在此处使用带有swagger- codegen-maven-plugin的Spring Boot检查完整的示例项目。
干杯