我是Gradle和Groovy的新手,正在阅读Gradle的用户指南,并对任务方法中的一些语法问题有疑问:
task intro(dependsOn: hello) {
doLast { println "I'm Gradle" }
}
问题1:在上面的代码中,Project
API 中调用了哪个方法?我知道API中有四种重载:
Task task(String name, Closure configureClosure);
Task task(Map<String, ?> args, String name, Closure configureClosure);
Task task(Map<String, ?> args, String name) throws InvalidUserDataException;
Task task(String name) throws InvalidUserDataException;
但是像 intro(dependsOn: hello)
或者 copy(type: Copy)
这样的参数让我感到困惑,如果加上括号会怎么样呢?
问题2:为什么 << 是 doLast
方法的速记?我的意思是,Task
API 中有一个 leftshift
方法吗?它们之间有什么区别?
问题3:为什么可以在 build.gradle 中使用 tasks.create()
方法 17.1. 定义任务,我没有在 Project
API 或者 AbstractProject
源代码中看到 tasks
属性。