我使用以下两个依赖项:
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 为这两个依赖项设置相同的版本?
原文由 confile 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的依赖项之一是强制更新番石榴版本。使用
gradle dependencies
来定位哪个库正在逐出您的版本。您遇到的问题是,如果您强制它使用 14.0.1,另一个库可能无法正常工作。你不能只使用 17.0 版本作为你的依赖项吗?
我没有在 build.gradle 中维护单独的版本号,而是使用了一个 dependencies.gradle 文件,该文件将具有版本号的映射并将其拉入 build.gradle。这样我只需要维护单个番石榴版本。所以你的例子将是:
依赖项.gradle
然后在 build.gradle 文件中你可以拥有:
然后当我想迁移到 17.0 时,我只需要更改 dependencies.gradle。
我也非常喜欢将传递依赖项设置为 false
这样,您就不会在编译时驱逐一些依赖项,尽管如果驱逐库不完全向后兼容,您可能会在运行时遇到问题。让我们面对它,如果您正在编写代码,您应该知道您使用哪些库并且您应该明确说明您的依赖关系。它可以保护您免受您的依赖项之一升级和搞砸。