#gradle #openapi #openapi-generator #openapi-generator-gradle-plugin
Вопрос:
Я хочу сгенерировать заглушки клиентов для моего приложения Flutter/Dart для внутреннего API, написанного в OpenAPI 3. Сам сервер был создан с использованием той же спецификации API, что и плагин Maven 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
Но я хочу поместить его в сборку gradle как часть приложения Flutter, поэтому я последовал инструкциям и создал этот 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
, но это не имеет никакого значения, флаг игнорируется, и я все равно получаю тот же результат.
Комментарии:
1. Не могли бы вы опубликовать отредактированную версию своего файла API JSON? Это было бы полезно для воспроизведения проблемы. Спасибо!