如何在OpenAPI Generator输入YML中修改Spring代码包结构?需改哪个Mustache文件?
关于OpenAPI Generator修改Spring代码包结构的问题
能否修改默认包结构?
完全可以修改。OpenAPI Generator提供两种实现方式:通过命令行参数快速配置基础结构,或通过自定义Mustache模板实现更灵活的定制化结构。
方式一:命令行参数快速调整(无需修改模板)
如果只是调整基础包路径和核心组件的包位置,直接在生成命令中指定以下参数即可:
--api-package:指定API控制器(Controller)的包路径,例如com.example.api.controller--model-package:指定数据模型(Model)的包路径,例如com.example.api.model--invoker-package:指定配置类、调用器的包路径,例如com.example.config--package-name:设置根包名,作为所有包的统一前缀
示例生成命令:
openapi-generator generate -i petstore.yaml -g spring \ --api-package com.example.api.controller \ --model-package com.example.api.model \ --invoker-package com.example.config \ --package-name com.example
方式二:自定义Mustache模板实现复杂结构
如果需要新增service、exception、util这类细分包结构,就需要修改对应的Mustache模板:
- 先导出Spring生成器的默认模板到本地:
openapi-generator generate -g spring -o /tmp/spring-default-templates --skip-validate-spec
- 修改核心模板文件:
api.mustache:控制Controller类生成,修改文件顶部的package声明,对应到你期望的Controller包路径(比如package {{apiPackage}};,确保apiPackage参数指向com.example.api.controller)model.mustache:控制Model类生成,同理修改package声明到目标Model包路径- 若需要生成Service层代码,需自定义
service.mustache模板,设置包路径为com.example.api.service,并在生成配置中开启Service生成逻辑
- 生成代码时指定自定义模板目录:
openapi-generator generate -i petstore.yaml -g spring -t /path/to/your/custom-templates
匹配你期望的包结构(参考示意图)
假设你期望的结构是:
com.example ├─ api │ ├─ controller │ ├─ model │ └─ service ├─ config ├─ exception └─ util
可按以下步骤配置:
- 用
--api-package com.example.api.controller指定Controller包 - 用
--model-package com.example.api.model指定Model包 - 自定义
service.mustache模板并配置包路径为com.example.api.service - 用
--invoker-package com.example.config指定配置类包 - exception、util这类自定义包可手动补充,或通过扩展模板实现自动生成
内容的提问来源于stack exchange,提问作者Aniket Thorat
相关产品推荐
相关产品推荐

