如何从 Gradle 中的 uri 生成 openapi 客户端
How to generate openapi client from uri in Gradle
我可能想做一些奇怪的事情,因为这似乎不是一个常见的问题(或者我问的可能全错了)。我原以为这很简单。
基本上,我正在寻找一种方法来执行与以下相同的操作,除了使用 gradle openapi-generator 插件:
openapi-generator generate -i www.example.com/openapi-doc -g spring
我试过的是以下内容(以及相关的错误):
- inputSpec.set("www.example.com/openapi-doc") --> Cannot convert URL {} to a file
- inputSpec.set(URL("www.example.com/openapi-doc").readText()) --> specified for property 'inputSpec' does not exist
实际代码如下所示:
tasks.register<GenerateTask>("generateClient") {
validateSpec
generatorName.set("spring")
library.set("spring-cloud")
// inputSpec.set("$openapiSpecDir/client/openapi.json") <-- *I am currently using a file, which I don't want to do*
inputSpec.set("https://www.example.com/openapi-doc")
outputDir.set(generatedClientDir)
apiPackage.set("org.example.api")
modelPackage.set("org.example.model")
skipOverwrite.set(false)
templateDir.set("$rootDir/src/main/resources/openapi/templates/client")
configOptions.put("java8", "false")
configOptions.put("serializationLibrary", "jackson")
configOptions.put("dateLibrary", "java8")
}
假设您使用的是 OpenAPI Generator Gradle Plugin, at the time of writing this answer, getting the inputSpec
from a URL is not supported. However, for Maven this has been implemented (Issue #2241 closed with PR #3826),因此很有可能通过功能请求实现它,使 Gradle 插件与其 Maven 对应插件相提并论。
话虽这么说,您可能想研究一下 Gradle Download Task。 Gradle Download Task 是一个插件,可让您从 URL 下载文件。下载的文件可用于将其提供给 OpenAPI 生成器。
我可能想做一些奇怪的事情,因为这似乎不是一个常见的问题(或者我问的可能全错了)。我原以为这很简单。
基本上,我正在寻找一种方法来执行与以下相同的操作,除了使用 gradle openapi-generator 插件:
openapi-generator generate -i www.example.com/openapi-doc -g spring
我试过的是以下内容(以及相关的错误):
- inputSpec.set("www.example.com/openapi-doc") --> Cannot convert URL {} to a file
- inputSpec.set(URL("www.example.com/openapi-doc").readText()) --> specified for property 'inputSpec' does not exist
实际代码如下所示:
tasks.register<GenerateTask>("generateClient") {
validateSpec
generatorName.set("spring")
library.set("spring-cloud")
// inputSpec.set("$openapiSpecDir/client/openapi.json") <-- *I am currently using a file, which I don't want to do*
inputSpec.set("https://www.example.com/openapi-doc")
outputDir.set(generatedClientDir)
apiPackage.set("org.example.api")
modelPackage.set("org.example.model")
skipOverwrite.set(false)
templateDir.set("$rootDir/src/main/resources/openapi/templates/client")
configOptions.put("java8", "false")
configOptions.put("serializationLibrary", "jackson")
configOptions.put("dateLibrary", "java8")
}
假设您使用的是 OpenAPI Generator Gradle Plugin, at the time of writing this answer, getting the inputSpec
from a URL is not supported. However, for Maven this has been implemented (Issue #2241 closed with PR #3826),因此很有可能通过功能请求实现它,使 Gradle 插件与其 Maven 对应插件相提并论。
话虽这么说,您可能想研究一下 Gradle Download Task。 Gradle Download Task 是一个插件,可让您从 URL 下载文件。下载的文件可用于将其提供给 OpenAPI 生成器。