You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle中TaskExecutionGraph.beforeTask/afterTask已废弃,如何替代?

替代废弃的gradle.taskGraph.beforeTask的方案

Gradle中gradle.taskGraph.beforeTask已被废弃,可根据需求选择以下两种替代方案:

方案一:全局监听所有任务执行前事件(替代全局beforeTask)

使用TaskExecutionListener注册全局监听器,监听所有任务的执行前事件,行为与原beforeTask一致:

afterEvaluate {
    gradle.taskGraph.addTaskExecutionListener(new TaskExecutionListener() {
        @Override
        void beforeExecute(Task task) {
            // 原beforeTask中的业务逻辑迁移至此
            println "即将执行任务:${task.name}"
        }

        @Override
        void afterExecute(Task task, TaskState state) {
            // 若需处理任务执行后的逻辑,可在此实现
        }
    })
}

方案二:针对特定任务/任务类型添加前置逻辑

如果无需全局监听,仅需对特定任务或任务类型执行前置逻辑,直接使用doFirst闭包更高效:

// 针对单个指定任务
tasks.named("compileDebugJavaWithJavac") {
    doFirst {
        println "compileDebugJavaWithJavac任务即将执行"
    }
}

// 针对某一类任务(例如所有Java编译任务)
tasks.withType(JavaCompile) {
    doFirst {
        println "Java编译任务即将执行"
    }
}

方案选择建议

  • 需全局统一处理所有任务前置逻辑:选方案一
  • 仅需针对特定任务/任务类型处理:选方案二,避免全局监听的不必要开销

内容的提问来源于stack exchange,提问作者Vlad Alexeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:12:38