2012-07-10 15 views
6

私はgradleスクリプトからant.signjarを呼び出します。 出力をキャプチャするにはどうすればよいですか? INFOの出力を別のレベルに昇格させたり、出力をWARNレベルのエラー警告に傍受またはラップしたりすることは、簡単にはできませんでした。 現在、証明書はすぐに有効期限が切れることを示していますが、これはWARNレベルには表示されません。GradleからAntタスクを呼び出すときにログメッセージを傍受または昇格するには

+0

:のGradleが署名に[署名プラグイン](http://gradle.org/docs/current/userguide/signing_plugin.html)を提供Antタスクを使用する必要はありません。 –

+0

@BenjaminMuschko私は署名用プラグインについて知っていますが、ドキュメントはそれがファイルのPGP署名を生成するためだけだと言っています。 Maven Centralへのアップロード用。署名プラグインを使用してJARファイルに署名するにはどうすればよいですか? – Vampire

答えて

2

私は、AntタスクがAntのログフレームワークを使用していて、標準出力に印刷するだけではないと仮定します。その場合、次のことを試してみましたか?

task taskThatCallsAntTask { 
    logging.level = LogLevel.INFO 
} 

このように構成さ

は、ログレベルのGradleを呼び出すときに設定されているログレベルに関係なく、タスクの実行中にINFOに変更しない(とバック後復帰)します。 Antログイベントのログレベルを上げることはできません。それはどのレベルのAntタスクに依存します。

+0

これは動作しますが、警告ではない他のメッセージも出力するので、あまりにも多くのログを出力します。私は出力を横取りして1ラインの範囲で上げることができれば本当に好きです。それについてのアイデア? – Vampire

+0

http://forums.gradle.orgで機能リクエスト(* idea *)を投稿してください。 –

+0

http://forums.gradle.org/gradle/topics/interception_of_ant_task_outputで、ありがとう – Vampire

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") 
関連する問題