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
在ant exec任务中有条件地重定向输出_Ant - Fatal编程技术网

在ant exec任务中有条件地重定向输出

在ant exec任务中有条件地重定向输出,ant,Ant,是否有一种方法可以有条件地将输出重定向到属性或标准输出流,如下面的非工作示例所示 上面的示例默认情况下将输出重定向到属性STDOUT。相反,我希望它被定向到stdout流 我可以创建mytask_,并将_stdout作为上述宏的副本,并删除exec outputproperty,但这违反了DRY原则 有什么好方法可以做到这一点吗?有两种Ant功能可以结合使用以获得所需的功能 首先,一个可以被传递任何你想要的 其次,可以使用在属性中捕获命令的输出 我在Windows机器上运行了以下Ant脚本,

是否有一种方法可以有条件地将输出重定向到属性或标准输出流,如下面的非工作示例所示


上面的示例默认情况下将输出重定向到属性
STDOUT
。相反,我希望它被定向到stdout流

我可以创建mytask_,并将_stdout作为上述宏的副本,并删除exec outputproperty,但这违反了DRY原则


有什么好方法可以做到这一点吗?

有两种Ant功能可以结合使用以获得所需的功能

首先,一个
可以被传递任何你想要的

其次,可以使用
在属性中捕获
命令的输出

我在Windows机器上运行了以下Ant脚本,以便可以使用cmd.exe的echo命令。将cmd.exe替换为my.exe:

<project name="exec-redirector-example" default="run">
    <macrodef name="mytask">
        <attribute name="message"/>
        <element name="myredirector" optional="true"/>
        <sequential>
            <exec executable="cmd.exe">
                <arg value="/c"/>
                <arg value="echo"/>
                <arg value="@{message}"/>
                <myredirector/>
            </exec>
        </sequential>
    </macrodef>

    <target name="run">
        <!-- exec outputs to STDOUT by default -->
        <mytask message="To STDOUT">
        </mytask>

        <!-- exec outputs to a property in this example -->
        <mytask message="To property">
            <myredirector>
                <redirector outputproperty="my.property"/>
            </myredirector>
        </mytask>

        <echo>${my.property}</echo>
    </target>
</project>

${my.property}

这看起来很有希望。很快就会测试的:D谢谢!