2

我需要在 Gradle 的执行阶段创建和执行任务。

目前,在我的构建任务期间,我确定并创建了多个添加到 taskContainer 的任务,使用:

tasks.add([name: "$taskName", type: "$taskType"], {...})

然后在添加完所有任务后,我依次执行它们,使用:

tasks["$taskName"].execute()

在第一次执行时,我收到以下错误:

> 任务工件状态缓存 (.../.gradle/1.5/taskArtifacts) 尚未锁定。

我做错了什么,有没有更好的方法在执行期间动态添加任务?

4

2 回答 2

2

所有任务和任务依赖项都必须在配置阶段声明。它们不能在执行阶段添加。此外,不支持调用task.execute()(并且会导致问题)。一个任务可以依赖于其他任务,但它不能调用它们。

于 2013-05-02T12:00:49.840 回答
0

您可以在配置阶段创建任务。

afterEvaluate{
    project.getTasks().create("name", org.gradle.api.tasks.JavaExec,
        { task -> defineRunTask project, task, application })
}

这将允许您在配置阶段结束时动态地创建任务。

为了执行任务,您只需添加那些依赖于此任务列表的任务,例如:

afterEvaluate {
    project.tasks.forEach{ task -> {
        project.tasks.compileJava.dependsOn task
    }
}
于 2021-05-04T14:33:05.703 回答