gradle - 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
,但没有任何区别,标志被忽略,我仍然得到相同的输出。
解决方案
推荐阅读
- c# - 从 LightBDD 装饰器中,如何从 DependencyResolver 中检索场景的当前 ChromeDriver?
- mongodb - mongodb atlas + aws lambda 无法设置安全白名单?
- javascript - 如何从 JSON 文件中设置下拉值
- python - 在 TensorFlow 2.0 中,如何查看数据集中的元素数量?
- android - 使用接口时获取空对象异常
- git - 给定长 git commit 如何安全地获得短提交
- php - laravel 中如何优雅地自定义集合键名
- r - 基于一个条件跨多列创建二元列
- excel - 按 ROW 对列进行索引并在字符串中查找部分匹配项
- flutter - 如何修复 TeamCity Flutter 构建中的“加载测试失败”