我遇到的问题是Gradle正在引入两个版本的库,这会导致运行时问题。这些版本都是必需的,并且是我拥有的两个依赖项的依赖项。库A需要库C版本x,库B需要库C版本y。在运行时,使用不正确的库C版本,导致NoSuchFieldError。这是我可以在Gradle中解决的问题吗?或者更多的是我的IDE / JVM选项的问题?
答案 0 :(得分:1)
一般情况下,当存在依赖性冲突时,Gradle将通过选择最新版本的库来做正确的事情。但是由于各种原因,这可能并不总是正常工作。为了解决这个问题,你可以明确地告诉Gradle 不在解决过程中包含某种传递依赖。这是一个例子:
compile (group:'com.project', name:'library', version:'1.0') {
// These lines will exclude these other libraries from being included
exclude module: 'groovy-all'
exclude module: 'log4j'
exclude module: 'commons-lang'
}
如果需要,你可以让它变得更精细,但我发现排除模块似乎对我有用。