Ant:如何在apply中回显目标文件的名称

时间:2011-09-28 21:57:17

标签: ant echo task apply

我对Ant并不熟悉,我想知道如何将当前处理文件的名称打印到命令行。

这就是我到目前为止......它是一个宏的一部分,它使用yui压缩器minifys文件。

<apply executable="java" parallel="false" verbose="true" dest="@{target}">

    <fileset dir="@{src}">
        <include name="**/*.@{filetype}"/>
    </fileset>

    <arg line="-jar" />
    <arg path="${yui.jar}" />
    <arg value="--charset" />
    <arg value="ANSI" />
    <arg value="-o" />
    <targetfile />

    <mapper type="glob" from="*.@{filetype}" to="*.min.@{filetype}" />
</apply>

我想要的是:

 [echo] Start!
[apply] Processed: filename-1.min.js
[apply] Processed: filename-2.min.js
[apply] Processed: filename-3.min.js
 [echo] Success!

2 个答案:

答案 0 :(得分:2)

我没有很多申请经验,但您可以尝试从apply元素中定义文件集,获取打印结果,然后将其引用到您的apply元素中。

<fileset dir="@{src}" id="my.files">
    <include name="**/*.@{filetype}"/>
</fileset>
<pathconvert pathsep="${line.separator}" property="processed.files" refid="my.files"/>
<echo>Start!</echo>
<echo message="${processed.files}"/>

<apply executable="java" parallel="false" verbose="true" dest="@{target}">
    <fileset refid="my.files"/>
    <arg line="-jar" />
    <arg path="${yui.jar}" />
    <arg value="--charset" />
    <arg value="ANSI" />
    <arg value="-o" />
    <targetfile />

    <mapper type="glob" from="*.@{filetype}" to="*.min.@{filetype}" />
</apply>

<echo>Success!</echo>

当然,只有当apply可执行文件不打印任何混乱的输出时,这才有效。

答案 1 :(得分:0)

我发现这样做的最好方法是向ant添加debug或verbose标志:

ant target-name -debugant target-name -verbose

然后打印执行命令行。例如:

[apply] Executing 'lib\NUnit\bin\nunit-console-x86.exe' with arguments:
[apply] '/noshadow'
[apply] '/domain:multiple'
[apply] '/labels'
[apply] '/framework:net-4.5'
[apply] '/nologo'
[apply] 'C:\blah\foo.Tests.dll

不幸的是,这会详细记录所有内容,而不仅仅是特定的apply