2017-10-08 99 views
3

的Java /春服务器存根生成与招摇,CODEGEN - Maven的插件Swagger/OpenAPI:如何在构建过程中整合生成打字稿/角度客户端?

在我的春天启动的Java项目,我使用swagger-codegen-maven-plugin产生从我扬鞭2.0 API的Spring MVC的控制器接口(服务器存根)。阳明海运。 Maven构建过程中的集成非常简单。它的工作原理与我以前用WSAX的jaxws-maven插件完成的一样。这是使用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包,就像swagger-codegen-maven-plugin在使用maven时所做的那样。

我误解了一些东西吗?上面提到的样本已经是结果,但是到达那里的推荐方法是什么?在基于npm的项目中这样一个整合是不是要走的路?是否应该手动执行并将生成的打字稿文件检入源目录?

回答

0

简言之:
使用行家 “招摇-CODEGEN-行家-插件”,以生成客户端/服务器代码出扬鞭YAML/JSON的,使用 “EXEC-行家-插件” 来安装节点的依赖关系(NPM安装)和客户端编译(ng build)。

详情:
最近也有类似的问题,没有发现在互联网任何东西,通过以下方式来实现它(请不要严格判断,如果它不是理想的)。

构建流水线:

  1. “招摇-CODEGEN - Maven的插件” 生成模型和API代码 Spring MVC的服务器
  2. Maven的制造和安装生成的服务器代码 并安装到本地资源库神器
  3. Spring Boot应用程序包括生成的服务器的相关性 工件,并且具有附加的配置,属性和实际的 控制器的实现
  4. “swagger-codegen-maven-plugin”为 Angular Client生成模型和API代码。输出目录在“mem-client”角 项目下。
  5. “的exec-Maven的插件” 安装客户端的依赖关系(NPM安装) “EXEC - Maven的插件” 构建应用程序(NG建立--env =督促...)的 输出构建存储在春季启动应用程序资源
  6. 编译并加入到静态服务器资源一旦角的客户,我们可以 创建春天服务器和客户端 (“春天启动了Maven插件”能做到这一点)

注意独立JAR:请注意,产生服务器和客户端代码是只读的,仅作为依赖/导入包含在内。独立项目中控制器的真正实现。要启动服务器/客户端编码,请执行“mvn generate-sources”。要创建服务器+客户端作为独立的Web应用程序,只需在父项“mem”项目中执行“mvn install”即可。这将创建包含所有必要内容的jar。

实施例:
下面是一个工作实施例中(在简单的“记忆测验”的游戏。注意:未合并掌握分支又,请参阅在GitHub“问答”分支):https://github.com/makimenko/mem/tree/quiz

项目概述:

  1. 家长Maven POM文件 “MEM” 的项目,其中包括在 资源的所有子模块
  2. Maven的 “MEM-设计” 项目只包括扬鞭2.0 YAML文件秒。
  3. Maven的“MEM-服务器”项目包括弹簧引导配置, 特性和实控制器
  4. 角5客户项目“MEM客户”
  5. 自动生成的代码(未触摸时,只是在只读模式作为使用 import。Ignored in source control)

希望这个信息可以帮到你。

+0

thx回答,但您仍然使用maven生成角度客户端模型/ api。在一个纯粹的基于角度cli的应用程序中,我不想将maven添加为第二个构建工具。我想将它集成到npm构建过程中。 – fischermatte