我試圖捕獲每個任務執行時寫入的輸出。當使用--max-workers 1運行Gradle時,下面的代碼按預期工作,但是當多個任務並行運行時,以下代碼將從其他同時運行的任務中讀取輸出。Gradle - 捕獲每個任務寫入輸出/ err的輸出
API文檔聲明以下關於任務中的「getLogging」方法。從它所說的我認爲它應該支持捕獲來自單個任務的輸出,而不管同時運行任何其他任務。
getLogging() 返回可用於控制此任務的日誌級別和標準輸出/錯誤捕獲的LoggingManager。 https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html
graph.allTasks.forEach { Task task ->
task.ext.capturedOutput = [ ]
def listener = { task.capturedOutput << it } as StandardOutputListener
task.logging.addStandardErrorListener(listener)
task.logging.addStandardOutputListener(listener)
task.doLast {
task.logging.removeStandardOutputListener(listener)
task.logging.removeStandardErrorListener(listener)
}
}
有我在上面的代碼搞砸的東西,或者我應該報告這個bug?