這是Windows上的構建過程。 我有gradle這個任務(類型:執行),它採用了doFirst關閉臨時文件從外部目錄,這是需要它的構建過程中,複製:gradle任務執行在doFirst中的commandLine後跳過
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中,執行復制命令,使整個任務終止並阻止執行任務的主要目的。
使用交換機--debug我接過來一看進入調試輸出,看到複製命令使狀態變爲成功:
[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停止任務進一步執行?
爲什麼你決定使用Windows命令行文件拷貝而不是gradle這個副本的任務嗎? – AdamSkywalker