我试图捕获每个任务执行时写入的输出。当使用--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?