ant - 运行 Ant exec 任务,没有 "Result:"输出

标签 ant exec

当 Ant exec 任务运行以非零退出状态完成的命令时,exec 任务会输出状态,例如:

 [exec] Result: 1

这是在没有上下文的情况下打印的,因此会让用户感到困惑。 即使使用 outputproperty="someproperty"failureonerror="false" 调用 exec 任务,也会打印该信息。 我对 grep 等命令使用这样的调用,其中非零输出可能是所需的预期结果。

有没有办法抑制“Result:”输出,而不对 Ant 进程的输出进行任何其他更改?

最佳答案

看一下下面的示例,它使用 JavaScript 来禁用和恢复日志记录。

build.xml

<project name="ant-exec-intentional-fail" default="run">
    <target name="run">
        <echo>Show that exec logs "Result: 1" by default...</echo>
        <exec executable="sh" failonerror="false">
            <arg value="-c"/>
            <arg value="exit 1"/>
        </exec>
        <echo>Disabling logging...</echo>
        <script language="javascript"><![CDATA[
            var savedLoggers = project.getBuildListeners();
            for( var i = 0; i < savedLoggers.length; i++ ) {
                var logger = savedLoggers[i];
                project.removeBuildListener( logger );
            }
            project.addReference( "savedLoggers", savedLoggers );
        ]]></script>
        <exec executable="sh" failonerror="false" resultproperty="middle-sh-result">
            <arg value="-c"/>
            <arg value="exit 42"/>
        </exec>
        <!-- Restore logging. -->
        <script language="javascript"><![CDATA[
            var savedLoggers = project.getReference( "savedLoggers" );
            for( var i = 0; i < savedLoggers.length; i++ ) {
                var logger = savedLoggers[i];
                project.addBuildListener( logger );
            }
        ]]></script>
        <echo>Verify logging works again...</echo>
        <exec executable="sh" failonerror="false">
            <arg value="-c"/>
            <arg value="exit 1"/>
        </exec>
        <echo>By the way, the middle exec returned: ${middle-sh-result}</echo>
    </target>
</project>

输出

run:
 [echo] Show that exec logs "Result: 1" by default...
 [exec] Result: 1
 [echo] Disabling logging...
 [echo] Verify logging works again...
 [exec] Result: 1
 [echo] By the way, the middle exec returned: 42

关于ant - 运行 Ant exec 任务,没有 "Result:"输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41052344/

相关文章:

xml - 使用 Android 生成的 ant 构建文件时如何为 JAR 指定 lib 文件夹?

Ant 无法识别其 lib 目录中的 JUnit jar?

用于创建根符号链接(symbolic link)的 PHP exec 权限

powershell - kubectl exec 命令在 powershell ISE 中不起作用(在 powershell 中起作用)- 是否有理由或解决方法使其起作用?

java - 从 Java 运行 AWK 创建文件并使用 BufferedReader 读取它

c - 使用execv在C中拆分文件

java - Ant Zip 任务创建一个通过读取 Version.java 命名的 zip

java - 创建 jar 问题

ant - 运行新的 Ant 目标而不杀死先前的目标

bash - 如何修改bin/hdfs以从$ HADOOP_HOME/bin外部执行?