Ric*_*ick 2 gradle gradle-plugin
是否可以强制 gradle 在插件中使用不同的依赖项?
我想运行 openapi-generator 5.1.1 插件,但我希望它使用 swagger-parser 2.0.26。其原因就是下面提到的问题。在该问题中,用户“selliera”提到他能够运行具有该依赖项的插件(好吧,他提到了 2.0.20,但未发布的修复程序使用 2.0.26)。
https://github.com/OpenAPITools/openapi-generator/issues/8266
我尝试过使用严格版本:
dependencies {
implementation("io.swagger.parser.v3:swagger-parser") {
version {
strictly "2.0.26"
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'io.swagger.parser.v3' && details.requested.name =='swagger-parser') {
details.useVersion("2.0.26")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎都没有任何效果。
这是一个简单的 gradle 脚本来演示该问题。如果将petstore 规范的内容放入下面脚本中指定的 petstore.yml 文件中并运行openApiGenerate,则它可以正常工作。如果您将 petstore 规范中的 url 更改为相对的 URL(如链接问题中所示),则生成器将失败。使用新版本的 swagger-parser 应该可以解决这个问题。
plugins {
id 'java'
id 'org.openapi.generator' version '5.1.1'
}
repositories {
mavenCentral()
}
openApiGenerate {
generatorName = 'spring'
inputSpec = "$rootDir/src/main/resources/petstore.yml"
}
Run Code Online (Sandbox Code Playgroud)
对我有用(gradle 5.6.4):
plugins {}块之前):buildscript {
configurations.all {
resolutionStrategy {
force 'io.swagger.parser.v3:swagger-parser:2.0.26'
}
}
}
Run Code Online (Sandbox Code Playgroud)
buildscript {}块之外添加类似的配置,它将强制应用程序的依赖版本:configurations.all {
resolutionStrategy {
force 'io.swagger.parser.v3:swagger-parser:2.0.26'
}
}
Run Code Online (Sandbox Code Playgroud)
PS:现在 swagger-parser 2.0.26 是 openapi-generator 5.4.0 的默认版本
PPS:我知道,这是一个老问题,但在 Google 中仍然名列前茅
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |