Swagger-codegen

一切理论化和概念化的东西网上都能搜到,这里只记录了一个我自己的实践过程

现在经常用到 yaml, 就势必用到 swagger 的一套工具.
其中 swagger-codegen 可以根据yaml 文件 自动生成代码(可以不用手动写module就值得尝试一下). 实践如下:

第一部分 基本使用

Step1: Java 环境设定

确认 Java 是 1.7 以上版本. 并且在 environment 里有设定:

env_home_setting.png

system path 里也要设定:


env_path_setting.png
Step2: 下载 executable jar

从 maven直接下载: swagger-codegen-cli jar 我下了2.3.0 版.
如果要自己customize, 可以下载open source源代码, 然后用maven package也很方便. 在第二部分讲.

Step3: 把 jar 放在某个目录下

比如: C:\Java\jdk1.8.0_111\lib\swagger. 放在JDK 的lib里 为了集中管理jar, 新建一个swagger 文件夹,因为 接下去 generate 出来的 code都会默认放这个文件夹.

Step4: 运行

CMD 里, 进入之前放jar的文件目录, 运行:

java -jar swagger-codegen-cli-2.3.0.jar help generate

可以看到有一些help信息显示, 这表示准备工作都正确完成了.


codegen_help.png

用来运行 codegen的 基本命令格式如下:

java -jar swagger-codegen-cli-2.3.0.jar generate -i <path of your Swagger specification> -l <language>

比如你的 yaml 文件在 C:\Dev\git\abc.yaml, 要生成Java 代码, 那么命令行如下:

java -jar swagger-codegen-cli-2.3.0.jar generate -i C:\Dev\git\abc.yaml -l java


第二部分 修改源代码

自动生成的代码, 其路径 (或者说package) 默认是这样的:
package io.swagger.client.api/module

我希望尽量减少后期手动修改的内容,把这部分改成我自己需要的路径:
package com.abc.model;

这就需要稍微改动一下源代码了,步骤如下:

Step1: 获取open source 源代码

下载swagger-codegen 源代码,
解压到某个工作目录下,我放在: C:...\github\swaggerCodeGen
然后 import maven project到 eclipse,或者 STS 都可以。

Step2: 改代码

修改两个文件,第一个是 主要文件:

\modules\swagger-codegen\src\main\java\io\swagger\codegen\languages\JavaClientCodegen.java

modelPackage = "io.swagger.client.model"; 成你要的路径。

第二个文件是unit test 文件,和主功能无关,但是不修改的话测试没法过不能package 结束:

\modules\swagger-codegen\src\test\java\io\swagger\codegen\DefaultGeneratorTest.java

private static final String MODEL_ORDER_FILE = "/src/main/java/io/swagger/client/model/Order.java"; 改成相应的路径。

Step3: package

CMD到源代码目录下:

cd C:...\github\swaggerCodeGen\

mvn package -X

package success 后,可以在 C:...\github\swaggerCodeGen\modules\swagger-codegen-cli\target\lib 中找到 swagger-codegen-cli.jar

好了,把这个 jar 再拷贝到你之前的lib目录中(或者任何一个地方,反正不要在源代码里运行吧),按照第一部分的再运行喽,我能得到我想要的 路径 和 文件包啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,894评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,126评论 6 342
  • Swagger 是一个统一前后端用于生成文档和代码的工具,它使用 yaml / json 作为描述语言 通过 Op...
    连续三届村草阅读 43,173评论 2 17
  • 去年,我还在兰州某家私人设计院工作。工作忙碌而压抑,但活的很有存在感。单位和宿舍之间的距离不到100步。第二...
    小歌阅读 1,796评论 0 3
  • mongoose介绍及基本使用 标签(空格分隔): 未分类 两种和数据库交互的方式 使用原生语言查询 eg:sel...
    debt阅读 6,570评论 0 2

友情链接更多精彩内容