gpt4 book ai didi

Gradle 找不到不存在的前缀版本传递依赖

转载 作者:行者123 更新时间:2023-12-03 05:30:47 25 4
gpt4 key购买 nike

我有一个多模块 gradle我在模块中添加依赖项的项目 compile运行时配置。

这些依赖项使用不存在的版本前缀获取传递依赖项。

所以情况是这样的

compile 'group:moduleA:version.+'

这个 moduleA下载 moduleBversion.+前缀符号并下载另一个 moduleC具有相同的前缀符号, moduleC存在于 10 及以上版本和 8 及以下版本的工件中,因此没有编号为 9 的版本,gradle 坚持查找 moduleC对于版本 9,它不会获取高于或低于它的版本。

如果它试图找到的版本不存在,我如何让 gradle 获取另一个版本?

请发表评论以获得任何澄清,并感谢您的帮助。

编辑:想要澄清 +在版本部分中,无法解析为正确且存在于工件上的数字,例如 9.19.12 .
gradle确定这个版本,不正确如 9.1存在,但解析为 9.2或其他一些不存在的数字。

EDIT2:用于获取依赖项然后将它们添加到 compile 中的任务配置。
task addAdditionalDependencies {
doLast {
Object slurper = new JsonSlurper().parseText(api.jsonResponse())
Set<String> dependencyNames = configurations.compile.dependencies.collect { it.name }
List<Map<String, String>> artifactPaths = slurper.results.collect {
String[] pathSegments = it.path.split('/')
if (!dependencyNames.contains(pathSegments[1]) && project.name != pathSegments[1]) {
[group: pathSegments[0],
name: pathSegments[1],
version: "version.+",
configuration: 'compile']
} else [:]
}
artifactPaths.each {
if (!it.isEmpty()) {
project.dependencies.add('compile', it)
}
}
// we have to call this because app does not have any source files and so compileJava does not download
// dependencies
configurations.compile.files
}
}

最佳答案

当使用像 9.+ 这样的版本时, Gradle 将查找所有匹配前缀的版本,即 + 之前的部分.

但是,如果不存在这样的版本,则无法让 Gradle 忽略该部分。

如果 moduleC 的版本可以是任何东西,那么你可以简单地使用 +没有任何前缀。

请注意,除了 moduleC 的新版本之外,即使没有任何变化,做类似的事情也会使您在构建中受到破坏。正在出版。

您还可以将此动态版本分辨率与 dependency locking 结合使用。对何时升级有更细粒度的控制moduleC .

关于Gradle 找不到不存在的前缀版本传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59425406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com