我需要在Gradle执行阶段创建和执行任务。
目前,在我的构建任务中,我使用以下命令确定并创建我添加到taskContainer的多个任务:
tasks.add([name: "$taskName", type: "$taskType"], {...})
然后在添加完所有任务后,我按顺序执行它们:
tasks["$taskName"].execute()
在第一次执行时,我收到以下错误:
>任务工件状态缓存(... / .gradle / 1.5 / taskArtifacts)尚未锁定。
我做错了什么,是否有更好的方法在执行期间动态添加任务?
答案 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
}
}