Gradle在执行阶段,动态添加和执行任务

时间:2013-05-02 11:39:06

标签: gradle

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

目前,在我的构建任务中,我使用以下命令确定并创建我添加到taskContainer的多个任务:

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

然后在添加完所有任务后,我按顺序执行它们:

tasks["$taskName"].execute()

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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
    }
}