gpt4 book ai didi

java - 如何让模块中的依赖项比顶级存储库中的 build.gradle 具有更高的优先级

转载 作者:行者123 更新时间:2023-12-02 09:46:36 25 4
gpt4 key购买 nike

我的项目存储库树如下所示:

Project
module1
module1.gradle
module2
module2.gradle
...
build.gradle

然后在build.gradle文件中有一些依赖项和一些强制解析策略,例如

  configurations.all {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
force 'org.apache.hadoop:hadoop-common:2.5.0-cdh5.3.3',
}
}
dependencies {
compile(group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.6.0-cdh5.16.1')
}

但是,module1.gradle定义了hadoop-common的更高版本,例如

compile group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.5.0-cdh5.3.3'

我想对我的 module1、module2..moduleX 进行升级以使用“2.6.0-cdh5.16.1”。有些项目不需要升级,应该继续使用旧版本,因此我需要将强制依赖项保留在顶级 build.gradle 文件中。事实上,我不想接触任何不属于我的模块。

有没有办法在模块级别指定始终使用当前模块中定义的任何内容,而不是从顶层 build.gradle 继承?

最佳答案

顶层的 force(..) 语句旨在覆盖模块中指定的任何版本。

您可以通过在模块构建中放置另一个 force(..) 语句来重新覆盖该 force(..) 语句。第二个 force 语句在顶级语句之后进行评估,因此它将重新覆盖模块版本。

您可以将其放入模块的 build.gradle 文件中:

configurations.all {
resolutionStrategy {
force 'org.apache.hadoop:hadoop-common:2.6.0-cdh5.16.1'
}
}
<小时/>

请注意,覆盖和重新覆盖版本可能会导致困惑。例如,编辑顶级构建的人会期望他们的 force 能够正确应用于所有模块 - 如果您在模块中重新覆盖它,则情况并非如此。

关于java - 如何让模块中的依赖项比顶级存储库中的 build.gradle 具有更高的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606315/

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