Gradle 任务。 "(type: Copy)"和 <doLast> 不能同时工作

标签 gradle copy

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

您应该注意两个阶段 - ConfigurationExecution 。所有任务始终在每次构建时进行配置,但只有其中一些任务在执行阶段真正执行。

你看到的是copySomeFile任务是在配置阶段配置的。它不会复制任何内容,但必须进行配置。任务闭包中的所有内容都是任务的配置,这就是为什么您会看到 print("copySomeFile is reach"); 的结果。在输出中。

<<doLast用于在执行阶段运行某些内容,但是如果将所有配置放入doLast,则不会配置复制类型的任务。部分或添加 <<任务定义 - 这就是复制不起作用的原因。

关于 Gradle 任务。 "(type: Copy)"和 <doLast> 不能同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198227/

相关文章:

c++ - 使用back_inserter从结构的单个成员创建 vector

c++ - 我可以复制到 multimap 吗

Java.lang.NoClassDefFoundError 名称错误 : how to solve this?

android - 如何在build.gradle中区分os/cpu类型?

grails - Gradle找不到插件

java - 从文本区域复制的文本在另一个文本编辑器中显示在一行上

Javascript - ZeroClipboard 复制的内容不会更新

windows - batch/bat 一次复制文件夹和内容

android - Gradle 生成未签名的发布 apk

android - google-services.json 文件已添加,但模块根文件夹中缺少 : File google-services. json 错误