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



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

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

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

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

tasks["$taskName"].execute()

第一次执行,我得到以下错误:

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

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

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

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

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
    }
}

最新更新