javascript文件的ant build将我的$变为$

时间:2012-01-06 18:38:14

标签: javascript ant

我正在开发用于连接和缩小我的javascript文件的ant build。我有一个单独的属性文件,列出了js文件以及加载它们的顺序。我正在使用Mootools。当我在构建中运行以下代码时,我的所有$$都转换为$:

<loadfile property="js.files" srcFile="${basedir}/${dir.source}/javascript.files">
    <filterchain>
        <striplinecomments>
            <comment value="#"/>
        </striplinecomments>

        <!-- this filter outputs lines delimited by "," -->
        <tokenfilter delimoutput=","/>
    </filterchain>
</loadfile>

<!-- create a place holder variable that we will append file contents to -->
<var name="concat.script.contents" value=""/>

<for list="${js.files}" param="file" delimiter=",">
    <sequential>
        <loadfile property="@{file}.script.contents" srcfile="${basedir}/${dir.static}@{file}"/>
        <var name="concat.script.contents" value="${concat.script.contents}${@{file}.script.contents}"/>

        <!-- output the file contents here, everything looks okay -->
        <echo>${@{file}.script.contents}</echo>
    </sequential>
</for>  

<!-- output the final result, now all $$ have been converted to $. why? -->
<echo>${concat.script.contents}</echo>

我对ant很新,但上面的代码中没有任何内容向我表明所有$$都应该用$替换。

1 个答案:

答案 0 :(得分:0)

这可能是一个Ant bug。

在正则表达式中,双美元符号$$曾被$替换 - 额外的美元符号用作转义字符。

您正在使用的连接函数调用了ant-regexp。并且很难弄清楚究竟是在哪里使用ant-regexp,因为显然你没有明确地使用正则表达式。所以,我的猜测是你正在使用的连接函数在某处有一个内部调用ant-regexps。

尝试使用其他连接方式。例如,Concat任务可能会帮助你。