我的项目存储库树如下所示:
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
正确地应用于所有模块-如果您在模块中重新覆盖它,则情况并非如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句