windows - 在doFirst中的命令行之后跳过Gradle任务执行

标签 windows gradle

这是Windows上的构建过程。
我有gradle任务(类型:Exec),该任务使用其doFirst闭包来临时从外部目录复制文件,这是其构建过程所必需的:

task(myTask, type: Exec) {
    [...]
    < do own stuff >
    [...]

    doFirst {
        println "Copy file"
        if (System.properties['os.name'].toLowerCase().contains('windows')) {
            commandLine 'cmd', '/c', "copy .\\<myFile> .\\..\\.."
        }
    }
}

出于某种原因,在doFirst中使用commandLine执行复制命令会使整个任务终止,并阻止执行任务的主要目的。

使用switch --debug,我查看了调试输出,并发现copy命令使状态变为成功:
[DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
[DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command 'cmd'.
[DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
[DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
[INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command 'cmd''
[QUIET] [system.out]         1 file(s) copied.
[DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: SUCCEEDED
[DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command 'cmd'' finished with exit value 0 (state: SUCCEEDED)
[DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task 'myTask'

如何防止doFirst中的此“命令行”停止任务的进一步执行?

最佳答案

代替使用commandLine闭包中的doFirst,只需使用普通的旧copy块即可:

task(myTask, type: Exec) {
    [...]
    < do own stuff >
    [...]

    doFirst {
        println "Copy file"
        copy {
           from "some file"
           into "some path"
        }
    }
}

关于windows - 在doFirst中的命令行之后跳过Gradle任务执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641472/

相关文章:

c++ - VirtualAlloc 失败

c++ - Windows ListView LVM_GETITEM iImage 始终为零

android - Gradle:升级到 Gradle 2.2.1 后,android.variantFilter 导致构建失败

java - 通过以下方式在 Java 项目中导入库

c++ - 在Windows窗体应用程序的点击功能中使用字符串

windows - 有没有win的浏览器可以用来测试html5 localstorage的?

windows - 如何使用写入地址捕获内存写入和调用函数

plugins - Gradle:重新初始化/重新加载settings.gradle

gradle - Gradle Multiproject不会将项目添加到类路径

grails - 运行 grails run-app 时出现 "No builders"错误 GrailsClasspath