gpt4 book ai didi

java - 如何使用多个 yaml 文件生成 openAPI 代码

转载 作者:行者123 更新时间:2023-11-30 12:02:55 25 4
gpt4 key购买 nike

我有两个 yaml 文件,customer.yaml 和 employee.yaml。如何在单个项目中从这两个 yaml 文件生成 java 代码。我正在使用 gradle,我知道单个 yaml 的任务规范,但如何指定多个 yaml。我应该在单个 openApiGenerator 下指定多个 inputSpec 吗?如果是,那么这样做的确切语法是什么。下面是我在 build.gradle 文件中的 openApiGenerator 任务。

``
openApiGenerate {
generatorName = "spring"
apiPackage = "com.xxx.generated.controller"
modelPackage = "com.xxx.generated.model"
inputSpec = "$rootDir//schema/employee.yaml".toString()
outputDir = "$rootDir/generated".toString()
configOptions = [
dateLibrary: "java8"
]
systemProperties = [
invoker : "false",
generateSupportingFiles: "true"
]
additionalProperties = [
interfaceOnly : "true",
]
}
``

我听说过 openApiGenerators 任务,它列出了通过 Open API Generators 可用的生成器,但找不到使用它的方法。

最佳答案

我成功地为项目中的每个 yaml 文件动态创建了任务。我使用的是 gradle 4.8.1,但我认为这也适用于下一个版本。

import groovy.io.FileType
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

plugins {
id "org.openapi.generator" version "4.1.3"
}

//here we are going to store swagger files
def swaggerList = []

//iteration by swagger file root folder and save into swaggerList variable
def dir = new File("$rootDir/src/main/resources/api/".toString())
dir.eachFileRecurse(FileType.FILES) { file ->
if (file.getName().endsWith(".yaml"))
swaggerList << file
}

// Iterate on all swagger files and generate a task for each one with the nomenclature openApiGenerate + swagger name
swaggerList.each {
println it.path
def apiName = it.getName().replace(".yaml", "");

tasks.create("openApiGenerate" + apiName.capitalize(), GenerateTask.class, {
generatorName = "jaxrs-spec"
inputSpec = "$rootDir/src/main/resources/api/".toString() + "${apiName}.yaml"
outputDir = "$buildDir/generated/openapi".toString()
apiPackage = "my.package.rest.api.definition.".toString() + "${apiName}"
modelPackage = "my.package.rest.api.model.".toString() + "${apiName}"
templateDir = "$rootDir/src/main/resources/api/templates".toString()
// https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/jaxrs-spec.md
configOptions = [
dateLibrary: "java8",
java8: true,
useBeanValidation: true,
interfaceOnly: true,
useOptional: true,
useLombok: true
]
})
}

sourceSets {
main {
java {
srcDir("$buildDir/generated/openapi/src/gen/java")
srcDir("$buildDir/generated/openapi/src/main/java")
}
}
}

在此之后,如果我有一个名为 login.yaml 和其他名为 user.yaml user.yaml 的 swagger 文件,我将调用下一个 gradle 任务:

gradle openApiGenerateLogin

或者

gradle openApiGenerateUser

关于java - 如何使用多个 yaml 文件生成 openAPI 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58118614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com