为什么0000不退出后gradle foo?在我移除doFirst foo.doFirst{ delete '0000' }之后,那0000就在那里了。
doFirst应该在foo任务脚本之前执行。
医生说:
Task doFirst(Closure action)
Adds the given closure to the beginning of this task's action list. The closure is passed this task as a parameter when executed.完整的命令日志:
isaac-mbp:swap isaac$ cat build.gradle
task foo {
mkdir '0000/a'
mkdir '0000/b'
}
foo.doFirst{ delete '0000' }
isaac-mbp:swap isaac$ gradle foo
:foo
BUILD SUCCESSFUL
Total time: 0.581 secs
isaac-mbp:swap isaac$ ls -lha 0000
ls: cannot access 0000: No such file or directory
isaac-mbp:swap isaac$ gradle -v
------------------------------------------------------------
Gradle 2.14
------------------------------------------------------------
Build time: 2016-06-14 07:16:37 UTC
Revision: cba5fea19f1e0c6a00cc904828a6ec4e11739abc
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_25 (Oracle Corporation 25.25-b02)
OS: Mac OS X 10.11.5 x86_64发布于 2016-07-21 06:07:30
不是的。
build.gradle分两个阶段运行:配置和执行。以下代码中的逻辑(mkdir)将在每次计算build.gradle时执行,因为它是在配置时添加的:
task foo {
mkdir '0000/a'
mkdir '0000/b'
}要解决这个问题,请添加一个操作:
task foo << {
mkdir '0000/a'
mkdir '0000/b'
}现在是doFirst
task foo << {
mkdir '0000/a'
mkdir '0000/b'
}
foo.doFirst { delete '0000' }现在任务有两个操作:mkdirs和delete,它们将按照适当的顺序执行。请看一看here
https://stackoverflow.com/questions/38493784
复制相似问题