2014-10-04 131 views
0

以下gradle这个构建脚本摇篮任务执行

task hello << { 
      println "task hello" 
} 

hello << { 
    println "th" 
} 

产生输出:

task hello 
th 

但一个人的顺序逆转造成的错误:

* What went wrong: 
A problem occurred evaluating root project 
> Could not find property 'hello' on root project 

是什么样的错误?你能用Groovy的观点来解释吗?

+0

当然,如果你真的只是交换这些代码段,那么第一个代码段就不会有任何“任务”。 – 2014-10-04 15:54:51

回答

1

的代码可以在Java的伪代码翻译方式如下:

Task task = project.addTask("hello"); 
task.doLast(() -> println("hello")); 

task = project.getTaskByName("hello"); // works fine, because a task "hello" has bee added before 
task.doLast(() -> println("th")); 

如果切换两种操作,你会得到

Task task = project.getTaskByName("hello"); // doesn't work, because no task "hello" has been defined before 
task.doLast(() -> println("th")); 

task = project.addTask("hello"); 
task.doLast(() -> println("hello")); 

而且很明显,因为你想修改尚未定义的任务,这是行不通的。