gradle使用自己的依赖项而不是build.gradle for commons-cli

时间:2015-10-07 15:44:32

标签: java gradle

我的项目无法编译,因为我已将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的部分看起来像是非常垃圾和不透明的行为

1 个答案:

答案 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