创建在gradle中的所有其他任务之前运行的任务

Ori*_*sel 9 init task gradle

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

task A {
    println "Task A"
}

task initializer {
   println "initialized"
}
Run Code Online (Sandbox Code Playgroud)

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

>initialized

>Task A
Run Code Online (Sandbox Code Playgroud)

现在,如果我要添加:

task B {
    println "Task B"
}
Run Code Online (Sandbox Code Playgroud)

执行gradle -q B,我得到:

>initialized

>Task B
Run Code Online (Sandbox Code Playgroud)

所以我执行哪个任务并不重要,它总是首先被"初始化".

lan*_*ava 10

您可以使每个名称不是'初始化程序'的任务依赖于'初始化程序'任务.例如:

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" }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以添加BuildListener(或使用其中一种方便方法,例如:Gradle.buildStarted(...))