【发布时间】:2017-02-24 09:57:36
【问题描述】:
我想从我的插件代码中执行 gradle 任务。
任何人都可以建议我,我如何以编程方式从代码执行 gradle 任务。
谢谢, 苏梅特。
【问题讨论】:
标签: intellij-idea gradle plugins android-studio-plugin
我想从我的插件代码中执行 gradle 任务。
任何人都可以建议我,我如何以编程方式从代码执行 gradle 任务。
谢谢, 苏梅特。
【问题讨论】:
标签: intellij-idea gradle plugins android-studio-plugin
你可以这样做
task a {
doLast {
println 'test'
}
}
task b {
doLast {
a.execute()
}
}
所以在插件代码中它可能类似于
project.tasks.<taskname>.execute()
但这在未来可能会改变。您应该依赖任务的链接,而不是直接调用它们。
【讨论】:
project.tasks.findByName(name) 进行查找。如果它返回null,那么在不同的时间尝试它,比如在gradle.taskGraph.whenReady {taskGraph -> project.tasks.findByName(name) }中调用它
Martin Linha 提供的答案不再适用于最新版本的 Gradle,例如 Gradle 7。Task 类不再具有 execute 方法。相反,必须执行活动。此外,您可能还想执行依赖项:
void executeTask(Task task) {
task.taskDependencies.getDependencies(task).each {
subTask -> executeTask(subTask)
}
task.actions.each { it.execute(task) }
}
请注意,这仍然是一个 hack,不能保证有效。
【讨论】: