我的项目无法编译,因为我已将build.gradle配置为使用commons-cli-1.3,而gradle使用commons-cli-1.2:
compile 'commons-cli:commons-cli:1.3'
如果我依赖洞察力正确显示了我的期望:
commons-cli:commons-cli:1.3
\--- compile
但是,如果我检查configurations.compile.asPath
,我会在commons-cli-1.3.jar之前的路径上看到lib / plugins / commons-cli-1.2.jar!
这似乎是因为我对具有编译依赖性gradleApi()的项目有项目依赖 - 它使用1.2.jar(未在dependencyInsight中报告)
我发现这至少发生在gradle 2.3和2.7中。
有人遇到这个问题并有解决方案吗? 在gradle的部分看起来像是非常垃圾和不透明的行为
答案 0 :(得分:1)
所以,在我的案例中,这就是我要解决的问题...... 而不是在我的其他项目依赖项中使用gradleApi(),我明确地添加了这些:
compile 'org.gradle:gradle-core:2.6'
compile 'org.codehaus.groovy:groovy-all:2.4.5'
即使这并没有解决我的问题(它确实如此),但这确实使这些依赖关系更容易查看/管理,例如添加{exclude:}子句等等。我猜gradleApi()只是一个可怕的"方便"功能(见长期错误:https://issues.gradle.org/browse/GRADLE-1715)