在我的Spring Boot Java项目中,我使用swagger-codegen-maven-plugin从我的Swagger 2.0 api.yml生成Spring MVC控制器接口(服务器存根). maven构建过程中的集成非常简单.它像我以前用WSDLs的jaxws-maven-plugin一样工作.这是带有swagger-codegen的pom.xml中的示例配置.它生成服务器端模型和mvc接口:
<plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>2.2.3</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>/api/api-v2.yml</inputSpec> <language>spring</language> <apiPackage>io.fischermatte.test.api</apiPackage> <modelPackage>io.fischermatte.test.api.model</modelPackage> <output>${project.build.directory}/generated</output> <configOptions> <interfaceOnly>true</interfaceOnly> <sourceFolder>/src/main/java</sourceFolder> <library>spring-mvc</library> <dateLibrary>java8</dateLibrary> </configOptions> </configuration> </execution> </executions> </plugin>
但是如何在客户角度应用程序的npm构建过程中集成相同的东西?
现在我试图在我的角度应用程序的npm构建过程中集成客户端代码的生成.我有一个基于Swagger 2.0定义我的休息端点的api.yml.我希望npm构建生成类似于此typescript-angular-v4.3示例的api模块.就像我所看到的那样,npm没有正式的包,就像你使用maven时swagger-codegen-maven-plugin这样做.
我在这里误解了什么吗?上面提到的样本已经是结果,但推荐的方法是什么?在基于npm的项目中这样的集成是不是要走的路?是否应该手动执行并将生成的typescript文件检查到sources目录中?
解决方法
使用maven“swagger-codegen-maven-plugin”从Swagger yaml / json生成服务器/客户端代码,使用“exec-maven-plugin”安装节点依赖项(npm install)和客户端编译(ng build).
细节:
最近有类似的问题,没有在互联网上找到任何东西,以下面的方式实现它(请不要严格判断,如果它不理想).
构建管道:
>“swagger-codegen-maven-plugin”为其生成模型和API代码
Spring MVC服务器
> Maven构建并安装生成的服务器代码
并作为工件安装到本地存储库
> Spring Boot应用程序包括生成的服务器的依赖性
神器,并具有其他配置,属性和真实
控制器的实施
>“swagger-codegen-maven-plugin”为其生成模型和API代码
角度客户端.输出目录位于“mem-client”角度下
项目.
>“exec-maven-plugin”安装客户端依赖项(npm install)
“exec-maven-plugin”构建应用程序(ng build –env = prod …)
存储在Spring Boot应用程序资源中的构建输出
>一旦Angular客户端编译并添加到静态服务器资源,我们就可以
使用spring服务器和客户端创建独立JAR
(“spring-boot-maven-plugin”可以做到)
注意:请注意,生成的服务器和客户端代码是只读的,仅作为依赖项/导入包含在内.在单独的项目中实际控制控制器.要启动服务器/客户端编码,请执行“mvn generate-sources”.要将服务器客户端创建为独立Web应用程序,只需在父“mem”项目中执行“mvn install”.这将创建包含其中所有必要内容的jar.
例:
这是一个工作示例(创建简单的“记忆测验”游戏.注意:尚未合并到主分支,请参阅GitHub上的“测验”分支):https://github.com/makimenko/mem/tree/quiz
项目概述:
>父maven pom“mem”项目,包括所有子模块
> Maven“mem-design”项目仅包含Swagger 2.0 yaml文件
资源.
> Maven“mem-server”项目包括Spring Boot配置,
属性和真实控制器
> Angular 5客户端项目“mem-client”
>自动生成的代码(未触摸,仅在只读模式下使用)
进口.在源代码管理中忽略)
希望这些信息可以帮到你.