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

Anyone have any idea how to specify a templateDir for swagger codegen v3? I have attached a snippet of my build.gradle below

Also the setTemplateDir does not do anything so I am guessing thats not an existing method.

My class path is 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
        }
    }

Upvotes: 1

Views: 857

Answers (1)

I figured this out. I would need to create a configurator and set the template directory there

Also so you know, if a mustache file is missing, then it will be pulled from one of dependency jars

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*/
        }
    }

Upvotes: 0

Related Questions