使用OpenAPI Generator时如何跳过Factory与Impl类的生成?
OpenAPI Generator 6.6.0 保留API类同时关闭Factory/Impl类生成
我正在使用版本6.6.0的OpenApi Generator,搭配Gradle生成插件开发。采用jaxrs-jersey服务端生成器,查阅文档后未找到关闭Factory类(*Factory.java)和实现类(*Impl.java)生成的方法。我发现若不生成API类可部分实现该需求,但我希望保留API类的生成。请问是否有可行方案?
以下是我的openApiGenerate任务配置:
openApiGenerate{ generatorName = "jaxrs-jersey" cleanupOutput = true inputSpec = "$project.swaggerFile" outputDir = "$project.buildSrcRoot" apiPackage = "$project.apiPackage" invokerPackage = "$project.rootPackage" modelPackage = "$project.modelPackage" generateModelTests = false globalProperties = [ apis: "false", models: "", modelDocs: "false", ] configOptions = [ dateLibrary: "java8", developerOrganizationUrl: "https://my-org.com", hideGenerationTimestamp: "true", useJakartaEe: "true" ] }
可行方案
你可以通过调整openApiGenerate任务的配置,实现保留API接口类、关闭Factory和Impl类生成的需求,具体修改点如下:
修正
globalProperties中的apis参数:
当前设置apis: "false"会关闭所有API相关类的生成,与你保留API类的需求冲突,需要改为apis: "true"。在
configOptions中添加控制生成的参数:
jaxrs-jersey生成器支持两个专属配置项,用于精准控制Impl和Factory类的生成:generateApiImplementation: 设为"false"关闭*Impl.java实现类的生成generateApiFactory: 设为"false"关闭*Factory.java工厂类的生成
修改后的完整配置如下:
openApiGenerate{ generatorName = "jaxrs-jersey" cleanupOutput = true inputSpec = "$project.swaggerFile" outputDir = "$project.buildSrcRoot" apiPackage = "$project.apiPackage" invokerPackage = "$project.rootPackage" modelPackage = "$project.modelPackage" generateModelTests = false globalProperties = [ apis: "true", // 改为true以保留API接口类 models: "", modelDocs: "false", ] configOptions = [ dateLibrary: "java8", developerOrganizationUrl: "https://my-org.com", hideGenerationTimestamp: "true", useJakartaEe: "true", generateApiImplementation: "false", // 关闭Impl类生成 generateApiFactory: "false" // 关闭Factory类生成 ] }
说明:这两个配置项在OpenAPI Generator 6.6.0版本的jaxrs-jersey生成器中是原生支持的,无需额外自定义模板即可生效。
内容的提问来源于stack exchange,提问作者Dark Star1
相关产品推荐
相关产品推荐

