task simpleTask{
print("simpleTask is reach");
}
task copySomeFile(type: Copy){
print("copySomeFile is reach");
from baseProjectPath;
into toProjectPath;
appendXML();
}
def appendXML(){
//modify a.txt
}
//我只想运行“simpleTask”,但是当“gradle simpleTask”时,任务“copySomeFile”也会运行!我知道是因为 gradle 初始化。
但是如果这样写
task copySomeFile(type: Copy)<<{
}
“copySomeFile”将不起作用。
“(type: Copy)”似乎无法与“<<”或“doLast{}”一起使用?
我只是希望“--gradle simpleTask”“--gradle copySomeFile”可以单独运行。
最佳答案
您必须阅读 Gradle build lifecycle 。
您应该注意两个阶段 - Configuration
和Execution
。所有任务始终在每次构建时进行配置,但只有其中一些任务在执行阶段真正执行。
你看到的是copySomeFile
任务是在配置阶段配置的。它不会复制任何内容,但必须进行配置。任务闭包中的所有内容都是任务的配置,这就是为什么您会看到 print("copySomeFile is reach");
的结果。在输出中。
<<
或doLast
用于在执行阶段运行某些内容,但是如果将所有配置放入doLast
,则不会配置复制类型的任务。部分或添加 <<
任务定义 - 这就是复制不起作用的原因。
关于 Gradle 任务。 "(type: Copy)"和 <doLast> 不能同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198227/