Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当从Gradle调用Ant任务时,如何拦截或提升日志消息_Ant_Gradle - Fatal编程技术网

当从Gradle调用Ant任务时,如何拦截或提升日志消息

当从Gradle调用Ant任务时,如何拦截或提升日志消息,ant,gradle,Ant,Gradle,我从gradle脚本调用ant.signjar。 如何捕获其输出? 我既不能轻松地将输出从INFO提升到另一个级别,也不能拦截或将输出包装为错误警告,以达到警告级别。 目前,signjar回显证书即将过期,但这并没有显示在警告级别上,这不是很好。我假设Ant任务使用的是Ant的日志框架,而不仅仅是打印到标准输出。在这种情况下,您是否尝试过以下方法 task taskThatCallsAntTask { logging.level = LogLevel.INFO } 以这种方式配置时,无

我从gradle脚本调用ant.signjar。 如何捕获其输出? 我既不能轻松地将输出从INFO提升到另一个级别,也不能拦截或将输出包装为错误警告,以达到警告级别。
目前,signjar回显证书即将过期,但这并没有显示在警告级别上,这不是很好。

我假设Ant任务使用的是Ant的日志框架,而不仅仅是打印到标准输出。在这种情况下,您是否尝试过以下方法

task taskThatCallsAntTask {
    logging.level = LogLevel.INFO
}

以这种方式配置时,无论调用Gradle时设置了哪个日志级别,在任务执行时日志级别都将更改为INFO(并在任务执行后恢复)。请注意,不能提升Ant日志事件的日志级别;这取决于Ant任务的日志级别。

这里有一个方法,通过在调用期间注册自定义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")

作为旁注:Gradle提供了用于签名工件的插件,因此您不需要使用Ant任务。@BenjaminMuschko我知道签名插件,但文档中说它仅用于生成文件的PGP签名,例如上传到Maven Central。如何使用签名插件对JAR文件进行签名?这是可行的,但由于它还打印其他非警告消息,因此会产生太多日志记录。我真的更喜欢截取输出并在每行范围内提升。有什么想法吗?是在,谢谢这不适用于守护进程,请参阅@PeterNiederwieser您可以直接在AntBuilder实例上设置日志记录级别吗?上面的建议不起作用,但我在为构建启用“-I”时得到了输出。