重要产出:
1 源码: https://gitee.com/binC2016/swagger-codegen_binc/tree/beta%E5%AF%B9api%E5%81%9A%E5%87%BA%E5%BE%AE%E8%B0%83
注意在【beta_对api做出微调】分支上,源码改了之后 执行mvn clean package -Dmavne.test.skip=true 就可以在\modules\swagger-codegen-cli\target\目录下生成一个 swagger-codegen-cli.jar;用着jar配上官方的命令就能够用了;更简单的方式是将这个放到下边产出2的脚本里;
2 自动化脚本
我在我的阿里云盘中放置了一个【swagger-codegen/swagger-codegen_binc_shell.7z】,进入bin目录;直接执行genertor.sh即可;可以看看使用说明;
如果对生成的东西做调整的话,可以用产出1 的源码调整;然后将生成的jar复制到当前目录下的lib目录下,替换现有的jar即可 ;
0 这篇笔记算是一个结果了;过程的记录有单独的一个笔记
1 关注一个资料网站
- https://gitee.com/bison-fork/swagger-codegen?_from=gitee_search 【官方文档的fork,gitee相对快一些,如果网速好的话用github更直接】
- https://www.cnblogs.com/shamo89/p/7680771.html 【入门第一篇】
- https://blog.csdn.net/liyifan687/article/details/103403127 【这个查漏补缺的】
- https://my.oschina.net/u/2006445/blog/843915 【3 4 一起看】
- https://blog.csdn.net/hl6164085/article/details/107481231 【-i 参数用yaml替换,各属性说明】
第三个连接时最详细的了,可惜发现的有点晚了,走了好多弯路;3中提示的两种方式,都只在源码的基础上进行的调整,我不是很推荐这样的方式;我们最好是用官方推荐的 meta的命令来生成一个自己的项目;然后在这个基础上进行自定义化;
2 下面笔记记录自定义话sagger-codegen的过程
1. 下载 swagger-codegen 源码
- GitHub下载zip也行
- git 命令下载也行;
- fork到gitee最好了,网速有保证,并且能直接建立仓库了
我们采用的就是第三个方式,将代码fork到了我自己的gitee仓库;【https://gitee.com/binC_2016/swagger-codegen_binc】;然后从gitee 下载这个代码;cd /d
mkdir -p /d/binc/idea_resp/binc_/swagger-codegen/
cd /d/binc/idea_resp/binc_/swagger-codegen/
git clone git@gitee.com:binC_2016/swagger-codegen_binc.git # 下载项目 1分钟左右
2 将源码打包
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
git branch # 看看当前处于什么分支
git checkout -b beta 创建并切换分支
mvn clean package -Dmaven.test.skip=true # 清理并打包 这个较耗时间1分钟 跳过测试
3 生成自己的库
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta -o output/java_binc -n java_binc -p com.binc.company.codegen
4 修改自己的模板代码
具体改动看样例代码,提交到https://gitee.com/binC_2016/swagger-codegen_binc 的beta分支;output/java_binc目录下;
idea打开output/java_binc这个项目 (添加util 修改一个pom(这个大概率不用改,有时候需要改版本) 添加模板 修改java_bincGenerator.java)
5 修改完后制作自己的模板包
cd /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/output/java_binc
mvn clean package
6 测试生成客户端
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
java -cp .:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/output/java_binc/target/java_binc-swagger-codegen-1.0.0.jar:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -l java_binc -i https://petstore.swagger.io/v2/swagger.json -o ./apiClient/var/tmp/java_binc_api_client_1 -DApiClientPrefix=Binc
注意:
1. windows 分隔符是分号;linux是冒号
2. 别掉了一开始的【.;】
3. 我自定义的模板不用带【-library 参数】
4. -DApiClientPrefix=Binc 这个很关键;后续我考虑挪到配置文件中去
7 查看生成的代码符合要求不
./apiClient/var/tmp/java_binc_api_client_1
8 将自定义行的东西放到配置文件中去
注意:为了将这个其中一个关键参数迁移至配置文件中,队员吗进行了很多的改动;有点不值得;但是挺好玩;我将这个上传到gitee了
我们采用-DApiClientPrefix=Binc这种方式处理的话,容易太多了;
或者的话我们可以试试用api-doc的basePath内容去处理一下都你这个容易;
mkdir -p /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc
cd /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc
touch config_sample.json
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
java -cp .:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/output/java_binc/target/java_binc-swagger-codegen-1.0.0.jar:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -l java_binc \
-i https://petstore.swagger.io/v2/swagger.json \
-o ./apiClient/var/tmp/java_binc_api_client_3 \
-c /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc/config_sample.json \
-DApiClientPrefix=Binc
下边这个式调试用的;很好玩
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -cp .:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/output/java_binc/target/java_binc-swagger-codegen-1.0.0.jar:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -l java_binc \
-i https://petstore.swagger.io/v2/swagger.json \
-o ./apiClient/var/tmp/java_binc_api_client_3 \
-c /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc/config_sample.json \
-DApiClientPrefix=Binc
我们将源码改了之后命令最后一个参数就进入配置文件了,不用再命令写了
java -cp .:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/output/java_binc/target/java_binc-swagger-codegen-1.0.0.jar:/d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen generate -l java_binc \
-i https://petstore.swagger.io/v2/swagger.json \
-o ./apiClient/var/tmp/java_binc_api_client_11 \
-c /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc/config_sample.json
9 将生成的代码到成包
cd /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/apiClient/var/tmp/java_binc_api_client_4
mvn clean package -Dmaven.test.skip=true
mvn install -Dmaven.test.skip=true 部署到maven仓库
1 上边的推到重来,发现要改的东西有点多,主要是模板那边烦躁;找个简单的方式,直接改源代码;暴力!
1 改了 javaClientCodegen.java 和 java/library/feign/ApiClient.mustache
2 打包
mvn clean package -Dmavne.test.skip=true
3 生成客户端代码
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i https://petstore.swagger.io/v2/swagger.json \
-l java \
-o ./apiClient/var/tmp/java_api_client4 \
--library feign \
-c /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc/config_sample.json
4 客户端打包
cd /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/apiClient/var/tmp/java_api_client
mvn clean install -Dmaven.test.skip=true
5 做一个pay.core的客户端;
cd /d/binc/idea_resp/binc_/swagger-codegen/swagger-codegen_binc
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
-i https://api-beta.yjyz.com/pay.core.srv/v2/api-docs \
-l java \
-o ./apiClient/var/tmp/payCore \
--library feign \
-c /d/binC/idea_resp/binc_/swagger-codegen/swagger-codegen_binc/config_binc/config_pay_core.json
6 pay.corede 打包
mvn clean install -Dmaven.test.skip=true
7 找一个项目引入这个包就能用了
8 变成脚本话的东西,并上传阿里云
swagger-codegen_binc_shell
2 脚本化之后,上传了到了阿里云盘
脚本的使用说明在云盘上有;这里也罗列一下
进入bin目录 双击执行genertor.sh即可; 如果乱码的话 git bash 右键编码改成 zh_CN utf-8 即可; 暂时只写了两个配置文件 1 : pay.core 2 transaction.srv 如果想要别的话,对比者添加即可;
源码在这儿https://gitee.com/binC_2016/swagger-codegen_binc/tree/beta/ 注意在beta分支上,源码改了之后 执行mvn clean package -Dmavne.test.skip=true 就可以在\modules\swagger-codegen-cli\target\目录下生成一个 swagger-codegen-cli.jar; 将这个jar复制到当前目录下的bin目录下,替换现有的jar即可
注意一点,这个东西部分代码与公司的不完全一直;所以不要用这个替换公司的生成方案了;以后自己写的项目可以用; 另:如果要引入一个别人的项目的话;可以利用swagger editor 生成一个openapi.json 然后将脚本中 java -jar swagger-codegen-cli.jar …的-i参数替换成这个文件的本地路径;用这种方式的话,请学习一定的语法,据说成本不大;
最主要的用处:就是以后自己写项目可以用这个生成自己的apiclient客户端代码,不用自己写feignclient 接口了;!!!!!
如果非要搞成跟公司一样的,需要替换两个东西,api.mustache 和pom.mustache 这里边有yjyz的字样,我们有提交到gitee,本地玩玩就行了