Gradle在其执行阶段,动态添加和执行任务
我需要在Gradle的执行阶段创建和执行任务Gradle在其执行阶段,动态添加和执行任务,gradle,Gradle,我需要在Gradle的执行阶段创建和执行任务 afterEvaluate{ project.getTasks().create("name", org.gradle.api.tasks.JavaExec, { task -> defineRunTask project, task, application }) } 目前,在生成任务期间,我确定并创建了多个任务,并使用以下方法将其添加到taskContainer中: tasks.add([名称:
afterEvaluate{
project.getTasks().create("name", org.gradle.api.tasks.JavaExec,
{ task -> defineRunTask project, task, application })
}
目前,在生成任务期间,我确定并创建了多个任务,并使用以下方法将其添加到taskContainer中:
tasks.add([名称:$taskName],类型:$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.getTasks().create("name", org.gradle.api.tasks.JavaExec,
{ task -> defineRunTask project, task, application })
}
为了执行任务,只需添加依赖于此任务列表的任务,如:
afterEvaluate {
project.tasks.forEach{ task -> {
project.tasks.compileJava.dependsOn task
}
}
为什么你要在执行过程中添加它们,而不是在构建的配置阶段添加它们?@HieryNomus在配置阶段这样做会让我的蜘蛛感到刺痛,因为我需要在知道要构建多少个目标之前拉下资源。据我所知,调用
gradletasks
会拖累构建资源,这既不理想也不符合预期。