如何正确使用swagger规范生成的服务器存根?

时间:2016-12-16 12:57:53

标签: java eclipse maven swagger swagger-codegen

我正在使用Swagger 2.0和swagger-codegen(实际上是Maven的swagger-codegen-plugin)来指定,记录和生成API,以Java作为目标语言。

该项目已经设置为构建服务器存根(JAX-RS)和文档,Eclipse识别项目buildPath中生成的代码。

我不确定这里适当的工作流程是什么。 : - /

我认为我不应该修改生成的类,否则每当我更改swagger规范时,我的更改都会被覆盖,我希望随着开发的进行,我会更多地考虑API。

那我该怎么办?继承自生成的类(哪些?)或将它们包含在我自己的类中?

2 个答案:

答案 0 :(得分:4)

此解决方案有两个步骤。

  1. 将** / * Controller.java或** / * Impl.java添加到.swagger-codegen-ignore文件中。根据使用的语言,* Controller.java或* Impl.java文件中提供了默认实现。从生成中排除默认实现后,您可以在自己的类中实现生成的接口。您自己班级中的代码不会在mvn clean上刷新。

  2. .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