更新Swagger code-gen生成的代码

时间:2017-12-19 11:30:57

标签: spring-boot swagger-ui swagger-codegen

我在春天使用swagger code-gen从swagger.yaml文件生成了代码。

现在我已经为我的API更新了swagger.yaml文件,并添加了更多的HTTP操作。

是否可以自动更新先前生成的现有代码而无需手动合并?

2 个答案:

答案 0 :(得分:12)

我猜你在谈论由codegen生成的控制器,然后你已经实现了。它们会在每一代后被覆盖,这意味着您必须手动合并代码以便每次都添加更改... 非常烦人

我能找到的最好的工作流程是使用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 here的Spring Boot检查完整的示例项目。

干杯

答案 1 :(得分:0)

遇到同样的问题,我找到了解决方案,首先应用git

  1. 提交当前状态
  2. 运行发电机
  3. 使用git进行预期的更改,但不要撤消手动编辑的撤消操作
  4. 提交并继续

我只是从这种方法开始,但它似乎至少对php-slim有效,在重新生成时仅更改一个文件(index.php)。