如何修改Swagger Codegen生成Spring服务存根的支持文件包名?
修改Swagger Codegen生成Spring服务存根的配置包名
我之前也碰到过这个问题,默认生成的配置类都堆在io.swagger.configuration里确实不太贴合项目结构,下面几种方法可以帮你修改这个默认包名:
方法1:Maven插件配置(最常用)
如果你是通过Maven的swagger-codegen-maven-plugin生成代码,直接在插件的<configuration>节点里添加configPackage参数即可:
<plugin> <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>3.0.34</version> <!-- 替换成你实际使用的版本 --> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/your-api-spec.yaml</inputSpec> <language>spring</language> <!-- 你原来指定的各类包名 --> <apiPackage>com.yourteam.api</apiPackage> <modelPackage>com.yourteam.model</modelPackage> <invokerPackage>com.yourteam.invoker</invokerPackage> <!-- 重点:修改配置类的包名 --> <configOptions> <configPackage>com.yourteam.configuration</configPackage> </configOptions> </configuration> </execution> </executions> </plugin>
方法2:命令行工具生成
如果用swagger-codegen-cli直接生成,有两种方式指定配置包名:
方式A:直接通过命令参数传递
swagger-codegen generate \ -i your-api-spec.yaml \ -l spring \ --api-package com.yourteam.api \ --model-package com.yourteam.model \ --invoker-package com.yourteam.invoker \ -DconfigPackage=com.yourteam.configuration
方式B:通过配置文件指定
先创建一个codegen-config.json文件:
{ "apiPackage": "com.yourteam.api", "modelPackage": "com.yourteam.model", "invokerPackage": "com.yourteam.invoker", "configPackage": "com.yourteam.configuration" }
再执行生成命令:
swagger-codegen generate \ -i your-api-spec.yaml \ -l spring \ -c codegen-config.json
方法3:自定义模板(进阶需求)
如果还需要调整配置类的结构或内容,可以自定义Swagger模板。找到Spring模板组里的配置类模板(比如SwaggerConfiguration.mustache、ApiExceptionController.mustache),修改模板里的包名占位符,然后生成时通过--template-dir参数指向你的自定义模板目录即可。
注意:Swagger Codegen v2和v3的插件groupId略有不同,v2的groupId是io.swagger,如果用的是旧版本记得对应调整参数位置。
内容的提问来源于stack exchange,提问作者user2068645
相关产品推荐
相关产品推荐

