如何强制Gradle为两个依赖项设置相同的版本?
我使用以下两个依赖项:
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为这两个依赖项设置相同的版本?
回答:
您的依赖项之一是强制更新番石榴版本。使用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 }
这样,即使退出库不是完全向后兼容的,尽管在运行时可能会出现问题,但是在编译时不会退出某些依赖项。面对现实吧,如果您正在编写代码,则应该了解所使用的库,并且应该清楚了解自己的依赖项。它可以保护您免受依赖性升级和混乱困扰之一。
以上是 如何强制Gradle为两个依赖项设置相同的版本? 的全部内容, 来源链接: utcz.com/qa/424222.html