首页 > 解决方案 > OpenAPI Generator 从命令行工作,但不能从 Gradle 插件工作

问题描述

我想为我的 Flutter/Dart 应用程序为用 OpenAPI 3 编写的内部 API 生成客户端存根。服务器本身是使用与 Maven 插件相同的 API 规范生成的org.openapitools.openapi-generator-maven-plugin

当我尝试通过命令行以这种方式生成 Dart 客户端存根时,它工作正常:

java -cp openapi-generator-cli-5.1.1.jar org.openapitools.codegen.OpenAPIGenerator generate -i ./api_spec/api.json -g dart --enable-post-process-file

但我想将它作为 Flutter 应用程序的一部分放入 gradle 构建中,所以我按照说明创建了这个build.gradle文件:

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

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

openApiGenerate {
    generatorName = "dart"
    inputSpec = "$rootDir/api_spec/api.json"
    outputDir = "$rootDir/../api"
    apiPackage = "mypackage.api"
    modelPackage = "mypackage.api"
}

但是,这不会生成客户端存根。(我什至试过换语言看看问题出在哪里,效果是一样的)。我收到一堆类似以下的错误,这似乎表明由于某种原因它需要一个 Swagger 2.0 文件而不是 OpenAPI 3.x 文件。

> Task :openApiGenerate FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':openApiGenerate'.
> There were issues with the specification. The option can be disabled via validateSpec (Maven/Gradle) or --skip-validate-spec (CLI).
   | Error count: 72, Warning count: 0
  Errors:
        -attribute paths.'/subscriber/{id}/device'(post).[id].type is missing
        -attribute openapi is unexpected
        -attribute servers is unexpected
        -attribute swagger is missing
        -attribute components is unexpected

有没有办法解决这个问题,或者明确指定 OpenAPI 版本?

我什至尝试设置validateSpec = false,但没有任何区别,标志被忽略,我仍然得到相同的输出。

标签: gradleopenapiopenapi-generator

解决方案


推荐阅读