我有一个项目,希望将其与providerCompile一起使用,以免拉出它的库。但是,这阻止了我提取我确实需要的另一个项目的库。文档说:如果您不希望这种传递行为,只需声明您提供的依赖项,但没有给出如何执行此操作的示例。

这基本上是我的依赖项的样子:

dependencies {
    compile(project(':common'))
    providedCompile(project(':projA')) // <-- also depends on :common
}

我的war文件正确地从projA中排除了所有传递库,但是对于common.jar,我需要胜过它,但我不知道该如何实现。但是文档似乎表明这是可能的...

编辑:这是一个似乎可行的hacky配置。行“projA”的组合给我projA.jar作为依赖,但没有它的 child 。并且由于“common”是编译依赖项,但是仅考虑在运行时提供“projA”,由于编译时依赖项,我仍然会得到common.jar。我不确定是否应该以这种方式工作,但这会引发我需要的 war 。
dependencies {
    compile(project(':projA')) { transitive = false }
    providedRuntime(project(':projA')) { transitive = false }
    compile(project(':common'))
}

最佳答案



这意味着,如果您不希望声明所有projA依赖项,则需要将它们逐一列出。

摘自Gradle 1.8 Userguide '26 .4。依赖管理

07-28 14:03