我使用以下两个依赖项:
compile 'com.google.guava:guava:14.0.1'
compile 'com.google.guava:guava-gwt:14.0.1'两者必须是相同的版本才能正确工作。由于我的其他依赖项使用更高的版本,Gradle对每个依赖项使用不同的版本。
我通过运行gradle dependencies找到了这个
compile - Compile classpath for source set 'main'.
+--- com.google.guava:guava:14.0.1 -> 17.0
+--- com.google.guava:guava-gwt:14.0.1
| +--- com.google.code.findbugs:jsr305:1.3.9
| \--- com.google.guava:guava:14.0.1 -> 17.0 如何强制Gradle为这两个依赖项设置相同的版本?
发布于 2015-02-11 23:01:13
您的依赖项之一是迫使番石榴版本更新。使用gradle dependencies定位哪个库正在驱逐您的版本。
问题是,如果强制使用14.0.1,另一个库可能无法正常工作。您不能仅仅使用17.0版本作为您的依赖吗?
我不是在build.gradle中维护单独的版本号,而是使用一个dependencies.gradle文件,该文件将有版本号的映射,并将其拖到build.gradle中。这样我只需要维护单一的番石榴版本。所以你的例子是:
dependencies.gradle
ext {
ver = [
guava: '14.0.1'
]
}然后在build.gradle文件中可以拥有:
apply from: "dependencies.gradle"
dependencies {
compile group: 'com.google.guava', module: 'guava', version: ver.guava
compile group: 'com.google.guava', module: 'guava-gwt', version: ver.guava
}然后,当我想要移动到17.0时,我只需要更改dependencies.gradle。
我也非常喜欢将传递依赖项设置为false
configurations.compile { transitive = false }通过这种方式,您不会在编译时驱逐某些依赖项,但如果驱逐库不完全向后兼容,则在运行时可能会出现问题。让我们面对它,如果您正在编写代码,您应该知道您使用了哪些库,并且您应该清楚地了解您的依赖关系。它保护您不受依赖项的影响,升级和破坏您。
发布于 2015-02-11 01:08:29
将此部分添加到dependencies块的正上方。
Groovy/Gradle:
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:14.0.1'
force 'com.google.guava:guava-gwt:14.0.1'
}
}Kotlin脚本:
configurations.all {
resolutionStrategy {
force("com.google.guava:guava:14.0.1")
force("com.google.guava:guava-gwt:14.0.1")
}
}发布于 2016-09-02 12:14:53
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.google.guava') {
details.useVersion "14.0.1"
}
}
}
dependencies {
compile 'com.google.guava:guava'
compile 'com.google.guava:guava-gwt'
}https://stackoverflow.com/questions/28444016
复制相似问题