Skip to content

fengwuxp/common-codegen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codegen

为高效开发而生,简单快捷、准确地生成 Api sdk。

代码生成转换工具

examples

swagger2
swagger3

模块说明

|--annotation-mate           注解元数据解析
|--annotation-processor      maven注解处理
|--core                      核心模块,定义了顶层的接口
|--docs                      说明文档
|--loong-codegen             loong codegen 通用的代码生成,这里会聚合其他的代码生成器
|--loong-codegen-starter     基于约定和探测,提供更简易的Api
|--examples                  生成例子集合
|-----codegen-result         生成结果目录,不同的语言会生成到不同的目录下
|-----swagger-2              基于swagger-2的生成例子
|--language-annotations      转换不同的请求工具库的注解(装饰器)
|--languages                 不同语言的处理
|--model                     数据模型
|--source-code-support       加载解析java源代码的支持
|--swagger-codegen           基于swagger注解规则的生成
|--template                  模板的通用处理
  • 期望(目标)

    1:将java代码转化为其他语言的代码
    
  • 实现思路

    1:通过扫描java类(通过注解标记)生成的统一java类描述元数据
    2:将java类的元数据转换为不同于语言(类型)的描述元数据,通过模板输出最终代码
    
  • 期望

    1:可以支持java代码或open Api规范进行生成 (java =>any => any => any) 2:可以支持自定义的规则

  • 新的思路(通过文档生成)

 1:增加通过解析swagger open api的json格式文档,构建统一的描述元数据 
 2:默认提供统一解析,通过提供不同语言的解析器进行自定义的处理 
 3:在模板层面进行抽象,可以实现根据不同的数据分发不同的模板(灵活的模板加载策略)
  • 通过源码增强
在面对没有swagger注解或者注解不够全面的的项目,通过源码上的注释输出sdk的注释说明增强

maven-plugin

  • 通过插件生成sdk
  • 支持指定生成的sdk lib(生成 ts、dart、oepnFeign等)
  • 支持调用指定的CodeGenerator的子类进行生成
  • 支持调用指定的测试用例生成(用于需要定制化时使用)

codegen-quick-support 快速接入支持

codegen-server

    为了更方便使用codegen,提供vcs server模块从代码版本控制平台(git/svn)将代码拉取到本地,自动调用
 mvn插件进行代码生成。这个的前提是,被拉取的代码库需要集成codegen-maven-plugin
    提供 client 通过 restful 接口调用代码生成,在生成完成后下载到本地。参见:
  1:支持通过代码库名称+分支名称 从git/svn中拉取代码
  2:支持调用mvn命令支持代码库的codegen-maven-plugin
  3:支持代码生成状态轮询和代码生成结果下载接口
  4:提供代码仓库的管理
  • codegen-client
  1:通过设置codegen-server地址和服务端代码的代码库和分支名称进行sdk生成下载
  • codegen-server docker support

features

  • 代码生成插件增加将生成结果上传到 codegen-server,codegen-client 通过接口下载
  • gradle 项目的支持
  • 支持输出文档(openapi文档或自定义格式的文档)
  • 支持通过openApi文档生成
  • 对响应式编程的支持