如何从 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

我试过的是以下内容(以及相关的错误):

  1. inputSpec.set("www.example.com/openapi-doc") --> Cannot convert URL {} to a file
  2. 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 生成器。