我正在开发用于连接和缩小我的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很新,但上面的代码中没有任何内容向我表明所有$$都应该用$替换。
答案 0 :(得分:0)
这可能是一个Ant bug。
在正则表达式中,双美元符号$$
曾被$
替换 - 额外的美元符号用作转义字符。
您正在使用的连接函数调用了ant-regexp。并且很难弄清楚究竟是在哪里使用ant-regexp,因为显然你没有明确地使用正则表达式。所以,我的猜测是你正在使用的连接函数在某处有一个内部调用ant-regexps。
尝试使用其他连接方式。例如,Concat任务可能会帮助你。