[英]Reference external file (openapi spec) from gradle plugin (openapitools generator)
我正在尝试构建一个引用已在工件中发布的 openapi 规范的应用程序。 这意味着我会将 foo.yaml 作为依赖项拉入,但我似乎无法弄清楚如何通过 openapitools 生成器插件实际引用该文件。
鉴于 openapi 规范可用于生成服务器代码和客户端代码,因此将其单独发布并简单地拉入并由实现引用是完全合理的。
com.company.bar-1.0.10 在 jar 的顶层包含 foo.yaml。
我已经在 build.gradle.kts 文件的顶层添加了依赖项,并且我还将它添加为插件任务本身的一部分。
任务 generateFooCode(类型:org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
generatorName = "java"
apiPackage = 'com.ehi.gbo.openapiconnect.api.foo'
modelPackage = 'com.ehi.gbo.openapiconnect.model.foo'
invokerPackage = 'com.ehi.gbo.openapiconnect.common.invoker'
inputSpec = "foo.yaml".toString()
outputDir = "$buildDir/generated-sources/foo".toString()
configOptions = [
dateLibrary : "java8",
useTags : true,
interfaceOnly : true,
delegatePattern : false,
useBeanValidation : false,
performBeanValidation: false,
useOptional : false,
serviceImplementation: false,
serviceInterface : false,
java8 : false,
serializableModel : true,
skipDefaultInterface : true,
reactive : false,
]
configurations {
dependencies {
implementation 'com.company.bar:foo-api:1.0.10'
}
}
}
我得到的结果: * 出了什么问题:任务“:generateFooCode”执行失败。
规范存在问题。 可以通过 validateSpec (Maven/Gradle) 或 --skip-validate-spec (CLI) 禁用该选项。 | 错误计数:1,警告计数:0 错误:-无法读取位置
foo.yaml
经过大量的谷歌搜索,我遇到了一个非常优雅的解决方案。
configurations {
api
}
dependencies {
api 'somegroup:someArtifact:someVersion'
}
task extractApi(type: Sync) {
dependsOn configurations.api
from { // use of closure defers evaluation until execution time
configurations.api.collect { zipTree(it) }
}
into "$buildDir/api/"
}
然后我可以让 inputSpec 参考 $buildDir/api/spec.yaml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.