gpt4 book ai didi

groovy - 在 Gradle 中聚合任务

转载 作者:行者123 更新时间:2023-12-02 03:40:07 25 4
gpt4 key购买 nike

我正在处理一个依赖于其他 gradle 任务的 gradle 任务,即聚合任务。聚合任务也要求其他任务以特定的线性顺序运行。

注意:其他任务必须能够独立运行。任务之间的依赖关系只有在运行聚合任务时才有意义。

我的第一次尝试是使用 someTask.execute(),但后来我意识到这不是 Gradle 的方式,即它不受支持,并且内部 API 可能会更改。

task aggregate() {

doFirst {
// Need to set properties required by other tasks
project.ext.somePropRequiredByTask1 = propertyX + "-" propertyY
}

doLast {
task1.execute()
task2.execute()
task3.execute()
}
}

阅读创建聚合任务后,这是我当前的解决方案:

task aggregate() {
// Only configure task if the task is exlicitly run
if (gradle.startParamter.taskNames.contains("aggregate") {
project.ext.somePropRequiredByTask1 = propertyX + "-" propertyY
chainTaskDependencies([task1, task2, task3])
}
}

// Create a strict dependsOn dependency order for the tasks in the task list
def chainTaskDependencies(List<Task> tasks) {
def taskNames = tasks.collect { it.name}
println "Run tasks in this order: " taskNames.join " -> "

def reversed = tasks.reverse()
for (int i = 0; i< reversed.size() -1 ; i ++) {
reversed[i].dependsOn(reversed[i+1])
}
}

这是在任务之间的顺序是线性的情况下创建聚合任务依赖关系的正确方法吗?如何改进?

最佳答案

如何只提取 shutdownVM、waitForVMShutdown 和回滚到您的任务调用的函数/闭包?然后您可以自由选择任何方式来组合它们。

我发现这是类似情况下最灵活的选择。

关于groovy - 在 Gradle 中聚合任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com