以下两个代码片段之间的区别是什么?
第一:
task copyFiles(type: Copy) << {
from "folder/from"
into "dest/folder"
}
Run Code Online (Sandbox Code Playgroud)
第二:
task copyFiles(type: Copy) {
from "folder/from"
into "dest/folder"
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ser 16
简而言之,第一个片段是错误的,第二个片段是正确的.
Gradle构建分三个阶段进行:初始化,配置和执行.类似from和into 配置任务的方法,因此需要在配置阶段调用它们.但是,<<(这是一个快捷方式doLast)增加了一个任务操作 -它指示任务做什么,如果和当它被执行.换句话说,第一个代码段在执行阶段配置任务,更糟糕的是,在执行主(复制)操作之后.因此配置不会有任何影响.
通常情况下,一个任务有两种类型(已沿着任务操作带来的)或一个<<(对于一个特设的任务).有两种合法的用例(在任务的"主要"工作之后进行一些自定义工作),但更常见的是没有,这是任务配置得太晚的错误.
我通常建议使用doLast而不是<<,因为它不那么神秘,并且更容易发现这样的错误.(一旦你理解了这些概念,那很明显task copyFiles(type: Copy) { doLast { from ... } }是错误的.)
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |