Gradle执行所有任务?

时间:2014-05-06 02:20:08

标签: gradle

我有一个非常简单的构建脚本,如此

task hello{
    println("hello World")
}

task bye {
    println("bye")
}

在我运行的命令行上 gradle hello我得到以下输出:

hello World
bye
:hello UP-TO-DATE

为什么要执行任务" bye" (我假设它被执行,因为" bye"被打印)?谢谢。

2 个答案:

答案 0 :(得分:45)

这是一个常见的陷阱:

task hello {
    println("Any code in here is about *configuring* the\
    task. By default, all tasks always get configured.")
    doLast {
        println("Any code in here is about *executing* the task.\
        This code only gets run if and when Gradle decides to execute the task.")
    }
}

配置阶段和执行阶段之间的区别可能是Gradle中要理解的最重要的概念。一开始可能会让人感到困惑,并且将来可能会消失。 Ant / Maven世界中的一种模拟是这些工具首先解析XML构建脚本并构建一个对象模型(可能在整个过程中解析一些属性),然后才执行构建。

答案 1 :(得分:0)

在Peter的回答中,如果要执行所有任务,则可以指定defaultTasks列表。

defaultTasks 'clean', 'run'

task clean {
    doLast {
        println 'Default Cleaning!'
    }
}

task run {
    doLast {
        println 'Default Running!'
    }
}

task other {
    doLast {
        println "I'm not a default task!"
    }
}

输出

Output of gradle -q
> gradle -q
Default Cleaning!
Default Running!

更多详细信息可以在这里找到 https://docs.gradle.org/current/userguide/tutorial_using_tasks.html