Ant中的条件令牌替换

时间:2011-05-06 15:33:13

标签: ant

我正在尝试在Ant构建文件中进行令牌替换,但前提是该令牌位于具有特定内容的行中。

文件中的示例模型片段:

<script type="text/javascript" src="scripts/someFolder/someFile1.js"></script>
<script type="text/javascript" src="scripts/otherFolder/fileName.js"></script>
<script type="text/javascript" src="scripts/aFolder/file3.js"></script>
<script type="text/javascript" src="scripts/someFolder/aFile.js"></script>
<script type="text/javascript" src="scripts/someFolder/subfolder/anotherFile.js"></script>
<body>
<p>Stuff</p>

在这个例子中,我想为来自“somefolder”的任何js文件附加一个?时间戳。 我试过这些方面的东西(实际的正则表达式是不同的):

<copy file="xyz.jsp" tofile="${staging}/jsp/Links-test.jsp">
    <filterchain>
       <linecontainsregexp>
           <regexp pattern="someFolder" />
       </linecontainsregexp>
           <replacestring from=".js" to=".js?blahblah" />               
     </filterchain>
</copy>

但这只会产生一个只包含修改过的行的文件。我需要设置什么标志来保存所有文件内容?我需要整个文件,只需要一些条件替换。

1 个答案:

答案 0 :(得分:0)

您可以将多个过滤链放在一起。您的过滤器链会过滤掉包含正则表达式的行。您需要的是第二个过滤器链,将其重新添加。

完全未经测试:

<copy file="xyz.jsp" tofile="${staging}/jsp/Links-test.jsp">
    <filterchain>
       <linecontainsregexp>
           <regexp pattern="someFolder" />
       </linecontainsregexp>
           <replacestring from=".js" to=".js?blahblah" />               
     </filterchain>
     <filterchain>
         <linecontainsregexp negate="true">
           <regexp pattern="someFolder" />
        </linecontainsregexp>
     </filterchain>               
</copy>