【发布时间】:2020-12-06 09:56:10
【问题描述】:
我正在努力实现的目标
我正在尝试使用 build.gradle 脚本中的 OpenAPI 生成器为 Android 生成我的 REST API 客户端。这样,每次规格更改时我都不必运行生成器命令行。理想情况下,这将在我构建/组装我的应用程序时生成,并且源将最终在 java (generated) 文件夹中,然后可以从代码访问生成的源(这就是发生的情况BuildConfig.java 文件)。
到目前为止我已经尝试过什么
在link from their official GitHub 之后,这是我最终得到的 build.gradle 文件:
apply plugin: 'com.android.application'
apply plugin: 'org.openapi.generator'
...
openApiValidate {
inputSpec = "$rootDir/app/src/main/openapi/my-api.yaml"
recommend = true
}
openApiGenerate {
generatorName = "java"
inputSpec = "$rootDir/app/src/main/openapi/my-api.yaml"
outputDir = "$buildDir/generated/openapi"
groupId = "$project.group"
id = "$project.name-openapi"
version = "$project.version"
apiPackage = "com.example.mypackage.api"
invokerPackage = "com.example.mypackage.invoker"
modelPackage = "com.example.mypackage.model"
configOptions = [
java8 : "true",
dateLibrary : "java8",
library : "retrofit2"
]
}
...
首先,我从未设法通过构建/组装任务生成 API,即使我尝试添加:
compileJava.dependsOn tasks.openApiGenerate
或
assemble.dependsOn tasks.openApiGenerate
我可以生成源的唯一方法是手动触发 openApiGenerate 任务:
然后,当我以这种方式生成源代码时,它们最终会出现在 build 文件夹中,但无法从我的代码中访问,并且在 java (generated) 文件夹中不可见:
然后我必须手动将生成的源文件复制/粘贴到我的项目源中才能使用 API。
即使我可以通过添加手动程序来解决这些问题,但如果整个过程都是自动的,那将更易于维护。我能够使用另一个工具 Protobuf 实现类似的结果。实际上,每次构建应用程序时都会触发我的 gradle 任务,并且源代码最终位于 java (generated) 文件夹中,因此我不必做任何额外的工作。不过这项任务要简单得多,所以我假设我无法使用 OpenAPI Generator 复制的主要工作由 Protobuf 插件本身处理。
【问题讨论】:
标签: android gradle openapi openapi-generator