我使用 swagger codegen 生成 jaxrs 服务器端类和客户端 java 类。
这是我用来生成类的命令
java -jar modules/swagger-codegen-distribution/target/swagger-codegen-distribution-2.1.2-M1.jar -i /Users/me/Workspace/swagger-codegen/samples/yaml/echo.yaml -l jaxrs -o samples/server/echo/java
生成的服务器代码有一个占位符来写我的“魔法”。
public Response echo(@ApiParam(value = "" )@HeaderParam("headerParam") String headerParam,
@ApiParam(value = "",required=true) @QueryParam("message") String message)
throws NotFoundException {
// do some magic!
return Response.ok().entity(new ApiResponseMessage(ApiResponseMessage.OK, "magic!")).build();
}
我在“echo”方法中添加了“魔法”并重新生成了代码,结果却发现它消失了。避免丢失自定义代码的一种方法是修改 codegen 模板以生成接口(interface)而不是类。然后我可以在实现的类中拥有所有自定义代码。
我试图找出是否有一种方法可以在重新生成代码之后保留自定义“魔法”,或者是否有比更改模板生成接口(interface)而不是类更好的方法来处理这种情况。
最佳答案
最新高手Swagger Codegen允许您指定文件不是 在代码生成期间被 .swagger-codegen-ignore(类似于 .gitignore)覆盖。
请拉最新版的 Swagger Codegen 高手试一试。
更新:2018 年 5 月,Swagger Codegen 的大约 50 位顶级贡献者和模板创建者决定 fork Swagger Codegen 以维护一个名为 OpenAPI Generator 的社区驱动版本.请引用Q&A了解更多信息。
关于swagger codegen 在生成的文件中覆盖我的自定义代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29252817/