如何在 OpenAPI 3.0 的 Swagger Codegen (Gradle) 中指定 templateDir?

How to specify templateDir in Swagger Codegen (Gradle) for OpenAPI 3.0?

有人知道如何为 swagger codegen v3 指定 templateDir 吗?我在下面附上了我的 build.gradle 的片段

而且 setTemplateDir 没有做任何事情所以我猜这不是一个现有的方法。

我的class路径是io.swagger.codegen.v3:swagger-codegen-maven-plugin:3.0.27

task generateServer {
        doLast {
            def openAPI = new OpenAPIV3Parser().read(rootProject.swaggerFile.toString(), null, null)
            def clientOpts = new ClientOptInput().openAPI(openAPI)
            def codegenConfig = CodegenConfigLoader.forName('spring')
            codegenConfig.setOutputDir(project.buildDir.toString())
//            codegenConfig.setTemplateDir('test');

            clientOpts.setConfig(codegenConfig)
            def clientOps = new ClientOpts()
            clientOps.setProperties([
                    'dateLibrary'     : 'java8', // Date library to use
                    'useTags'         : 'true',  // Use tags for the naming
                    'interfaceOnly'   : 'true'   // Generating the Controller API interface and the models only
            ])

            clientOpts.setOpts(clientOps)

            def generator = new DefaultGenerator().opts(clientOpts)
            generator.generate() // Executing the generation
        }
    }

我想通了。我需要创建一个配置器并在那里设置模板目录

另外你也知道,如果一个 mustache 文件丢失,那么它将从依赖 jar 之一中提取

task generateServer {
        doLast {          
            CodegenConfigurator codegenConfigurator = new CodegenConfigurator()
            codegenConfigurator
                    .setTemplateDir(rootProject.templateDir.toString())
                    .setLang('spring')
                    .setOutputDir(project.buildDir.toString())
                    .setInputSpec(rootProject.swaggerFile.toString())

            OpenAPI openAPI = new OpenAPIV3Parser().read(rootProject.swaggerFile.toString(), null, null)
            ClientOptInput clientOptInput = codegenConfigurator.toClientOptInput().openAPI(openAPI)

            DefaultGenerator generator = new DefaultGenerator().opts(clientOptInput)
            generator.generate() // Executing the generation*/
        }
    }