问题描述
我使用 swift run gradlew build,但它卡在 Start Daemom 上。
#!/usr/bin/swift sh
import Foundation
func shell(_ command: String) -> Void {
let task = Process()
task.standardOutput = FileHandle.standardOutput
task.standardError = FileHandle.standardError
task.standardInput = FileHandle.standardInput
task.arguments = ["-c",command]
task.launchPath = "/bin/sh"
task.currentDirectoryPath = "/Users/MyProjectPath"
task.launch()
task.waitUntilExit()
assert(task.terminationStatus == 0,"\(command)")
}
shell("./gradlew --debug --info :app:assembleRelease")
输出:
08:52:39.590 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
08:52:39.591 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: Gradle build daemon.
08:52:39.601 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
08:52:39.602 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'Gradle build daemon'
08:52:39.602 [DEBUG] [org.gradle.launcher.daemon.client.DefaultDaemonStarter] Gradle daemon process is starting. Waiting for the daemon to detach...
08:52:39.602 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
08:52:39.604 [DEBUG] [org.gradle.launcher.daemon.bootstrap.DaemonOutputConsumer] Starting consuming the daemon process output.
> Starting Daemon
它启动成功守护进程并等待守护进程输出,由于某种原因没有得到守护进程的输出。
解决方法
根据苹果文档,task.launchPath
和 task.launch()
已“弃用”,不建议再使用。而是使用 task.executableURL
和 try task.run()
。