我正在使用Swagger 2.0和swagger-codegen(实际上是Maven的swagger-codegen-plugin)来指定,记录和生成API,以Java作为目标语言。
该项目已经设置为构建服务器存根(JAX-RS)和文档,Eclipse识别项目buildPath中生成的代码。
我不确定这里适当的工作流程是什么。 : - /
我认为我不应该修改生成的类,否则每当我更改swagger规范时,我的更改都会被覆盖,我希望随着开发的进行,我会更多地考虑API。
那我该怎么办?继承自生成的类(哪些?)或将它们包含在我自己的类中?
答案 0 :(得分:4)
此解决方案有两个步骤。
将** / * Controller.java或** / * Impl.java添加到.swagger-codegen-ignore文件中。根据使用的语言,* Controller.java或* Impl.java文件中提供了默认实现。从生成中排除默认实现后,您可以在自己的类中实现生成的接口。您自己班级中的代码不会在mvn clean上刷新。
.swagger-codegen-ignore文件本身是一个自动生成的文件,因此当您执行mvn clean时,在步骤1中添加的任何内容都会刷新。为了避免这种情况,请将您的.swagger-codegen-ignore
版本保留在资源文件夹中,并将以下插件添加到您的pom中,以便在Maven生命周期开始时复制该文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>initialize</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/generated/swagger</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>.swagger-codegen-ignore</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:1)
我相信您需要更新Impl
类,例如PetApiServiceImpl
如果您想在代码重新生成期间跳过某些文件(例如Impl
类),可以将文件添加到.swagger-codegen-ignore。