Gradle:自动为项目添加测试依赖项

时间:2016-12-30 17:57:30

标签: testing gradle dependencies

在多项目构建中,一些项目依赖于其他项目,后者不仅提供编译/运行时库,还提供有用的测试库(例如,他们提供的组件的“模拟”实现)。

我知道有几种方法可以让一个项目的测试源可供另一个项目使用。讨论它们,例如作为this question的答案。

我正在寻找的是一种神奇的方法来自动实现这一点,因此,如果子项目添加了对另一个子项目的依赖,它自动获取项目测试源添加到{{1配置。

我尝试了天真的方法:

testCompile

但是这不起作用......大概是因为这个代码是在“错误的阶段”(或者正确的术语)和其他项目进行评估的 不要“知道”他们依赖这个。

我还尝试在根构建文件的末尾放置(相当于)这个(希望,那时其他所有内容都已配置),但这也不起作用。

有没有办法在这里做我想要的?

1 个答案:

答案 0 :(得分:1)

  

我还尝试在根构建文件

的末尾添加(相当于)这个

build.gradle中的声明顺序无关紧要。 Gradle构建生命周期有两个阶段,即配置和执行。在配置中,将读取各种build.gradle文件,并根据各种任务之间的隐式和显式依赖关系创建执行顺序图。

通常首先评估根build.gradle,但可以使用No such a file or a directory

强制首先评估子项目。

您可以监听构建周期中的各种事件,而不是在构建周期中的位置,以在某些点运行某些事件。在您的情况下,您希望在使用evaluationDependsOnChildren()块评估所有项目后运行代码段。请在此处查看example

您整体方法的一些可能替代方案:

  • 从下游项目添加testCompile依赖项,而不是从上游项目注入。将其添加到root build.gradle:

    afterEvaluate()

    (伪代码,未经测试)

  • 将可共享的测试/模拟组件分离到一个单独的模拟项目中,您可以将其作为testCompile依赖项添加到上游和下游项目中