Gradle:获取Ant任务输出

时间:2015-03-09 11:05:51

标签: apache ant io gradle output

我有一个使用标准输出来打印信息的Ant任务,我希望在gradle任务中使用此输出。我使用以下命令执行Ant任务:

tasks.myAntTask.execute()

有人知道如何获取Ant输出并将其传递给gradle任务?

2 个答案:

答案 0 :(得分:1)

Solution

这是一个通过在调用期间注册自定义BuildListener来捕获Ant任务输出的方法。

def captureAntOutput(ant, Closure command) {
    def buffer = new ByteArrayOutputStream()
    def captureStream = new PrintStream(buffer, true, "UTF-8")
    def listener = new org.apache.tools.ant.DefaultLogger(
            errorPrintStream: captureStream,
            outputPrintStream: captureStream,
            messageOutputLevel: org.apache.tools.ant.Project.MSG_INFO
    )

    ant.project.addBuildListener(listener)
    project.configure(ant, command)
    ant.project.removeBuildListener(listener)

    return buffer.toString("UTF-8");
}

使用示例:

String result = captureAntOutput(ant) {
    echo(message: "hello")
}
assert result.contains("hello")

答案 1 :(得分:0)

似乎this链接可能会有所帮助。更改日志级别以及编写自定义包装器可能是您正在寻找的。