如何在本地回显Apply任务?

时间:2012-02-13 19:37:44

标签: ant apply

是否可以对文件集执行apply并让ant打印正在执行的命令?

例如:

<target name="test">
    <apply executable="ls" failonerror="true" verbose="true" ignoremissing="false">
        <fileset dir=".">
            <include name="*.xml" />
        </fileset>

        <arg line="-la" />
    </apply>
</target>

我希望输出接近以下内容,关键行为:

  

[apply] ls -la ./build.xml"

E.g。

Buildfile: /home/abarker/NetBeansProjects/TestProject/build.xml
test:
    [apply] ls -la ./build.xml
    [apply] -rw-r--r-- 1 abarker abarker 29231 Feb 13 11:29 /home/abarker/NetBeansProjects/TestProject/build.xml
    [apply] Applied ls to 1 file and 0 directories.

3 个答案:

答案 0 :(得分:4)

我有几个想法:

  • 您可以使用outputproperty参数。这将为您提供<apply>任务中的命令输出。

  • 您可以使用文件集引用而不是实际的文件集。

像这样:

                  

<property name="apply.files.prop" refid='apply.files'/>
<echo>The files you're operating on are "${apply.files.prop}"</echo>

<apply executable="ls" failonerror="true" verbose="true" ignoremissing="false">
    <fileset refid="apply.files"/>
    <arg line="-la" />
</apply>

然后,您可以查看文件集引用apply.files以查看<apply>任务正在运行的文件。

运行ant时,您始终可以添加-debug-verbose标志。这将打印出你想要的东西,然后是一些 - 然后是一些很多。我希望有一种方法可以在特定任务上打开和关闭详细模式,但我不知道如何做到这一点 - at least an easy way to do that

答案 1 :(得分:0)

出于调试目的 - 只需用echo替换您自己的可执行文件。以下是我在Windows机器上执行此操作的示例:

  <target name="test">
    <apply executable="cmd" failonerror="true" verbose="true" ignoremissing="false">
        <fileset dir=".">
            <include name="*.xml" />
        </fileset>

        <arg line="/c" />
        <arg line="echo" />
        <arg line="ls" />
        <arg line="-la" />
    </apply>
  </target>

答案 2 :(得分:0)

通常当您使用ant / -v标记运行-verbose时,它会打印命令的每次执行(这还包括execapply