我有一个项目,我想使用 providedCompile 来避免拉取它的库。但是,这会阻止我引入我确实需要的另一个项目的库。文档说:如果您不想要这种传递行为,只需声明您提供的依赖项,但它没有给出如何执行此操作的示例。
这基本上是我的依赖项的样子:
dependencies {
compile(project(':common'))
providedCompile(project(':projA')) // <-- also depends on :common
}
我的战争文件正确地排除了 projA 中的所有传递库,但我需要为 common.jar 胜过它,我不知道如何做到这一点。但文档似乎表明这是可能的......
编辑:这是一个似乎有效的 hacky 配置。“projA”的行组合给了我 projA.jar 作为依赖项,但不是它的子项。而且由于“common”是一个编译依赖,但“projA”只被认为是在运行时提供的,由于编译时依赖,我仍然得到了 common.jar。我不确定它应该以这种方式工作,但它会产生我需要的战争。
dependencies {
compile(project(':projA')) { transitive = false }
providedRuntime(project(':projA')) { transitive = false }
compile(project(':common'))
}