6

gradle スクリプトから ant.signjar を呼び出します。その出力をどのようにキャプチャできますか? 出力を INFO から別のレベルに上げたり、出力をインターセプトしたり、エラー警告を WARN レベルにラップしたりすることは容易ではありませんでした。現在、signjar は証明書が間もなく期限切れになることをエコーし​​ますが、これは WARN レベルでは表示されず、あまり良くありません。

4

2 に答える 2

2

Antタスクは、標準出力に出力するだけでなく、Antのロギングフレームワークを使用していると思います。その場合、次のことを試しましたか?

task taskThatCallsAntTask {
    logging.level = LogLevel.INFO
}

このように設定すると、Gradleを呼び出すときに設定されているログレベルに関係なく、タスクの実行中にログレベルがINFOに変更されます(その後、元に戻ります)。Antログイベントのログレベルを上げることはできないことに注意してください。ログに記録するレベルはAntタスク次第です。

于 2012-07-12T23:02:12.103 に答える
0

呼び出し中にカスタム 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")
于 2015-02-12T09:14:07.533 に答える