是否可以对文件集执行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.
答案 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
时,它会打印命令的每次执行(这还包括exec
和apply
)