如何用Swagger Codegen生成Jakarta而非Javax的Spring Controller代码?
问题描述
需要使用Swagger Codegen Gradle插件生成采用Jakarta包的Spring Controller源代码,但未找到对应配置选项,已尝试如下配置:
additionalProperties = [ "errorOnUnknownEnum": true, "dateLibrary": "java8", "hideGenerationTimestamp": true, "modelPackage": "com.delphix.api.gw.model${version}", "apiPackage": "com.delphix.api.gw.api${version}", "interfaceOnly": true, "packageName": "api", "useTags": true, "useJakartaEe" : true, "useSpringBoot3" : true, "generateSupportingFiles" : false, "java11" : true, ]
解决方案
- 确认插件版本:必须使用
3.0.34及以上版本的Swagger Codegen Gradle插件,旧版本对useJakartaEe参数的支持不完善,无法正确生成Jakarta包的代码。 - 修正生成模式:当前配置中
interfaceOnly设为true,仅会生成API接口而非完整的Controller实现类。若需要生成Controller源代码,需将该参数改为false,插件会自动生成包含Jakarta注解的Controller类。 - 补充版本指定参数:添加
"jakartaEEVersion": "10"(或对应需求的版本如9),明确指定Jakarta EE版本,确保生成的代码依赖正确的包路径。 - 校验生成器类型:确保插件的
generatorName设置为spring,而非其他类型(如jaxrs),否则无法生成Spring风格的Controller代码。
完整配置示例:
swaggerCodegen { client { generatorName = "spring" inputSpec = file("src/main/resources/openapi.yaml").absolutePath outputDir = file("build/generated-sources/swagger").absolutePath additionalProperties = [ "errorOnUnknownEnum": true, "dateLibrary": "java8", "hideGenerationTimestamp": true, "modelPackage": "com.delphix.api.gw.model${version}", "apiPackage": "com.delphix.api.gw.api${version}", "interfaceOnly": false, "packageName": "api", "useTags": true, "useJakartaEe": true, "useSpringBoot3": true, "generateSupportingFiles": false, "java11": true, "jakartaEEVersion": "10" ] } }
内容的提问来源于stack exchange,提问作者jeet427
相关产品推荐
相关产品推荐

