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

lpa*_*eco 7 java eclipse maven swagger swagger-codegen

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

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

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

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

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

小智 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>
    Run Code Online (Sandbox Code Playgroud)