【发布时间】:2015-07-20 17:54:20
【问题描述】:
我正在尝试捕获每个任务执行时写入的输出。下面的代码在使用 --max-workers 1 运行 Gradle 时按预期工作,但是当多个任务并行运行时,下面的代码会从同时运行的其他任务中提取输出。
API 文档对 Task 上的“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)
}
}
我是否在上面的代码中搞砸了,还是应该将其报告为错误?
【问题讨论】:
标签: gradle