我的项目存储库树如下所示:
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 like的更高版本
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
继承?
答案 0 :(得分:1)
顶层的force(..)
语句旨在覆盖模块中指定的任何版本。
您可以通过在模块内部版本中放置另一个force(..)
语句来重新覆盖该force(..)
语句。第二条force
语句在顶级语句之后进行评估,因此它将重新覆盖模块版本。
您可以在模块的build.gradle
文件中放置
configurations.all {
resolutionStrategy {
force 'org.apache.hadoop:hadoop-common:2.6.0-cdh5.16.1'
}
}
请注意,尽管覆盖和重新覆盖的版本会引起混淆。例如,编辑顶层构建的人员将期望他们的force
被正确地应用于所有模块-如果您在模块中重新覆盖它,情况并非如此。