12

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

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

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

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

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

4

2 回答 2

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>

于 2017-01-22T07:16:38.580 回答
1

我相信您将需要更新Impl类,例如PetApiServiceImpl

如果您想Impl在代码重新生成期间跳过某些文件(例如类),您可以将文件添加到.swagger-codegen-ignore

于 2016-12-18T17:38:34.263 回答