首页 文章

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

提问于
浏览
1

我的项目没有编译,因为我已经将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 回答

  • 1

    所以,这就是我为解决它而做的事情,在我的情况下......我没有在我的其他项目依赖项中使用gradleApi(),而是明确地添加了这些:

    compile 'org.gradle:gradle-core:2.6'
    compile 'org.codehaus.groovy:groovy-all:2.4.5'
    

    即使这没有解决我的问题(它确实如此),这确实使这些依赖更容易看到/管理,例如添加{exclude:}子句等等 . 我猜gradleApi()只是一个糟糕的"convenience"功能(参见长期存在的错误:https://issues.gradle.org/browse/GRADLE-1715

相关问题