我有一个非常简单的构建脚本,如此
task hello{
println("hello World")
}
task bye {
println("bye")
}
在我运行的命令行上
gradle hello
我得到以下输出:
hello World
bye
:hello UP-TO-DATE
为什么要执行任务" bye" (我假设它被执行,因为" bye"被打印)?谢谢。
答案 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