下面两个代码片段有什么区别?
First:
task copyFiles(type: Copy) << {
from "folder/from"
into "dest/folder"
}
Second:
task copyFiles(type: Copy) {
from "folder/from"
into "dest/folder"
}
简而言之,第一个片段是错误的,第二个片段是正确的。
Gradle 构建分为三个阶段:初始化、配置和执行。方法如from
and into
配置一个任务,因此需要在配置阶段调用它们。然而,<<
(这是一个快捷方式doLast
)添加一个任务动作- 它指示任务做什么if and when它被执行。换句话说,第一个片段在执行阶段配置任务,更糟糕的是,after它的主要(复制)动作已经执行。因此该配置不会产生任何影响。
通常,一个任务有either类型(已经带来任务操作)or a <<
(对于临时任务)。两者都有合法的用例(在任务的“主要”工作之后做一些自定义工作),但更常见的是,任务配置得太晚是一个错误。
我一般推荐使用doLast
代替<<
,因为它不那么神秘,并且更容易发现此类错误。 (一旦你理解了这些概念,很明显task copyFiles(type: Copy) { doLast { from ... } }
是错的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)