如何从Gradle测试中调用Gradle子项目的任务?

时间:2017-10-19 23:56:20

标签: gradle build.gradle

我有一个包含如下子项目的项目:

Root Project
|----gradle.build
|----SubProject
|----|----gradle.build

这里的SubProject包含一个复制脚本,我需要在调用root项目的test命令时调用它。

所以我试图像这样在Root项目中调用SubProject的任务:

Task myTest(type: Test) {
    Project(‘:SubProject’).tasks.myCopyTask.execut()
}

然而,这会导致错误,“无法为任务集获取未知属性'myCopyTask'。”

您知道应该如何进行此调用,以及正确的语法应该是什么?

1 个答案:

答案 0 :(得分:2)

您的示例中有多个不起作用的内容:

  1. 你应该从不在任务上调用execute!的 NEVER !任务由Gradles任务系统自动调用,调用execute可能会破坏此系统。
  2. 创建任务时使用的闭包({ })用于配置。任务执行时,但在创建任务时不会执行。
  3. 在创建和评估根项目之后,创建并评估Gradle中的子项目。因此,在评估根项目时,子项目中的任务甚至不存在。
  4. 您可以使用dependsOn方法和绝对任务路径来解决所有这些问题:

    task myTest (type: Test) {
        dependsOn ':Subproject:myCopyTask'
    }