Swagger 代码生成
Swagger Codegen 是一个可执行 Jar 包,它可以解析 API 文档并生成不同语言的代码。
在生成代码前,请确保 API 文档内容可信,否则执行代码生成命令可能会发生代码注入危险。
使用
可以从 https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/ 获取最新的可指向 Jar 包(运行环境最低要求是 Java 8)。
这里我下载的是 https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.9/swagger-codegen-cli-2.4.9.jar 右击链接另存为即可。
java -jar swagger-codegen-cli-2.4.9.jar help
从服务器获取 API 文档,并生成代码到 petstore-java
, petstore-spring
目录:
# -i 可以指向远程地址或本地 json/yaml 文件 java -jar swagger-codegen-cli-2.4.9.jar generate -i https://petstore.swagger.io/v2/swagger.json -l java -o petstore-java
java -jar swagger-codegen-cli-2.4.9.jar generate -i https://petstore.swagger.io/v2/swagger.json -l spring -o petstore-spring
查看生成命令支持的参数:
java -jar swagger-codegen-cli-2.4.9.jar help generate
查看 spring 支持的配置项,可以通过 -c
传递配置文件:
java -jar swagger-codegen-cli-2.4.9.jar config-help -l spring
查看支持的语言:
java -jar swagger-codegen-cli-2.4.9.jar langs
模板
Swagger Codegen 使用 mustache 模板以及 jmustache 模板引擎。
首先需要下克隆下项目源码:
git clone https://github.com/swagger-api/swagger-codegen.git
编译:
cd modules\swagger-codegen-cli mvn clean package java -jar target\swagger-codegen-cli.jar help
定制模板的两种方式:
- 修改下
modules/swagger-codegen/src/main/resources/${your-language}
下的模板,Java 相关目录有Java
,JavaSpring
- 自己新建模板并使用
-t
指向模板目录
开发自己的代码生成器
Swagger Codegen 提供命令可以帮助您生成项目,包括基础的类和模板:
# -o 输出目录 # -n 生成器名称 # -p 包名 java -jar modules\swagger-codegen-cli\target\swagger-codegen-cli.jar meta -o output\myLibrary -n myClientCodegen -p com.liaozibo.swagger.codegen

Maven 插件
Swagger Codegen Maven 插件可以将 Swagger Codegen 集成到您的 Java 项目中。
Swagger Codegen Maven 插件配置:
<build> <plugins> <plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec> <language>spring</language> <output>${project.basedir}</output> <addCompileSourceRoot>true</addCompileSourceRoot> <modelPackage>com.liaozibo.study.swagger.model</modelPackage> <apiPackage>com.liaozibo.study.swagger.api</apiPackage> <invokerPackage>com.liaozibo.study.swagger.client</invokerPackage> <configOptions> <sourceFolder>src/main/java</sourceFolder> </configOptions> <generateModelDocumentation>false</generateModelDocumentation> <generateApiDocumentation>false</generateApiDocumentation> <generateSupportingFiles>false</generateSupportingFiles> </configuration> </plugin> </plugins> </build>
将自动生成代码加入 .gitignore
:
/.idea/ /swagger-codegen.iml /src/main/java/com/liaozibo/study/swagger/api/ /src/main/java/com/liaozibo/study/swagger/model/ /target/classes/ /target/maven-status/maven-compiler-plugin/compile/default-compile/
执行命令生成代码:
mvn clean compile
配置:
inputSpec
:OpenAPI 文档路径language
:目标生成语言(java/spring)output
:输出路径,默认是:${project.build.directory}/generated-sources/swagger
templateDirectory
:mustache 模板目录(mustache 是一个模板引擎)addCompileSourceRoot
:将输出路径设置为 source root,默认是true
modelPackage
:对象模型包路径apiPackage
:API 接口包路径invokerPackage
:调用代码包路径modelNamePrefix
,modelNameSuffix
:对象模型的前缀和后缀withXml
:在生成的对象模型和 API 接口启用 XML 注解(仅支持 Java 语言)configOptions
configHelp
ignoreFileOverride
:.swagger-codegen-ignore
的路径generateApis
:生成 API 接口,默认是true
generateApiTests
:生成 API 接口测试代码,默认是true
,只有generateApis
是 true 时才有效generateApiDocumentation
:生成 API 接口文档(Markdown 格式,在 doc 目录下),默认是true
,只有generateApis
是true
时才有效generateModels
:生成对象模型modelsToGenerate
:指定要生成的对象模型列表,以逗号分隔,默认是全部generateModelTests
:生成对象模型测试代码,默认是true
,只有generateModels
是true
时才有效generateModelDocumentation
:生成对象模型文档,默认是true
,只有generateModels
是true
时才有效generateSupportingFiles
:生成支持文件,默认是true
,除了对象模型和接口代码文件,其他都是支持文件supportingFilesToGenerate
:指定要生成的支持文件列表,以逗号分隔,默认是全部skip
:跳过代码生成,默认是false
,也可以通过codegen.skip
属性设置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具