创建一个在gradle中的所有其他任务之前运行的任务 [英] Creating a task that runs before all other tasks in gradle

查看:436
本文介绍了创建一个在gradle中的所有其他任务之前运行的任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要创建一个初始化任务,该任务在执行时将在所有其他任务之前运行.

I need to create an initialize task that will run before all other task when I execute it.

task A {
    println "Task A"
}

task initializer {
   println "initialized"
}

如果我执行gradle -q A,输出将是:

If I execute gradle -q A, the output will be:

>initialized

>Task A

现在,如果我要添加:

task B {
    println "Task B"
}

执行gradle -q B,我得到:

>initialized

>Task B

所以我执行哪个任务都没有关系,它总是首先被初始化".

So it doesn't matter which task I execute, it always get "initialized" first.

推荐答案

您可以使每个名称不是"initializer"的Task都依赖于"initializer"任务.例如:

You can make every Task who's name is NOT 'initializer' depend on the 'initializer' task. Eg:

task initializer {
   doLast { println "initializer" }
}

task task1() {
   doLast { println "task1" }
}

// make every other task depend on 'initializer'
// matching() and all() are "live" so any tasks declared after this line will also depend on 'initializer'
tasks.matching { it.name != 'initializer' }.all { Task task ->
    task.dependsOn initializer
}

task task2() {
   doLast { println "task2" }
}

或者您可以添加 BuildListener (或使用一个便利方法,例如:

Or you could add a BuildListener (or use one of the convenience methods eg: Gradle.buildStarted(...))

这篇关于创建一个在gradle中的所有其他任务之前运行的任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆