调用任务我知道,从另一个任务调用任务的当前支持的方法是使用dependsOn
或finalizedBy
,但我碰到这个问题。gradle这个:从另一个任务
我有个任务,taskA
,也可用它自己。我有另一个任务,taskB
,当被调用时,将取决于taskA
。问题是taskB
有其他条件,如果任务失败,则需要跳过该任务。这是我要的工作流程:
$ gradle taskA
:taskA
BUILD SUCCESSFUL
$ gradle taskB
checking condition 1... PASS
checking condition 2... PASS
:taskA
:taskB
BUILD SUCCESSFUL
$ gradle taskB
checking condition 1... PASS
checking condition 2... FAIL
:taskA SKIPPED
:taskB SKIPPED
BUILD SUCCESSFUL
如果直接调用,或从不同的任务doFirst
或dependsOn
什么的,taskA
应该不管条件执行。但是,如果调用taskB
,则在执行taskA
之前必须通过条件。以下是我已经试过:
project.tasks.create(name: "taskB", type: MyTask, dependsOn: "taskA")
project.taskB{
onlyIf {
if (!conditionA()){
return false
}
if (!conditionB()){
return false
}
return true
}
}
这里的问题是,taskB
被检查onlyIf
之前taskA
将执行,所以即使条件不满足,taskA
将执行。
我该如何做到这一点?
'gradle'变量来自哪里? – ewok
可能值得注意的是,这不会发生在我的'build.gradle'文件中。这是在一个单独的Groovy文件中,用于配置插件 – ewok
@ewok,一个单独的配置插件的groovy文件?它是如何工作的? 'gradle'在'project'实例上被定义为从其他地方取出的所有其他变量;} – Opal