假设我有两个任务:
tasks.register('taskA') {
// do something
}
tasks.register('taskB') {
// do something else
}
对于我的gradle构建,我只想调用任务“build”,它应该根据条件决定调用其他哪个任务:
tasks.register('build') {
doLast {
if (condition == true) {
// tasks.named('taskA').execute {}
} else {
// tasks.named('taskB').execute {}
}
}
}
没有“执行”这样的函数,但在Gradle中归档这种行为的最佳实践是什么?我还读到,如果可能,应该避免“依赖”。
1条答案
按热度按时间lrpiutwd1#
您的示例显示正在创建
build
任务。通常,在您应用所提供的Gradle插件(如Java Plugin)时,此任务已创建。通常在应用Gradle提供的插件时应用Base Plugin。在某些使用情形中,您可以手动应用插件。此答案假定已应用Java插件,使用Kotlin DSL,和8年级。您可以使用任务 predicate 来有条件地执行任务。建议避免使用
dependsOn
,因为在Gradle中通常有一种惯用的方式来表达您的意图。在这种情况下,任务 predicate 正是您所需要的。例如:分解如下:
1.按照您所做的那样注册任务,但是要使用
onlyIf
predicate 。任务只有在满足 predicate 的情况下才会执行。1.将
doLast { }
用于任务执行逻辑。对于更复杂的用途,请考虑创建custom task type。1.内置的
build
任务在Gradle中不包含任何有意义的语义,它是一个"捕获所有"构建所有内容的任务。因此,在这种情况下使用dependsOn
是合适的。