构建后,我需要修改一个 HTML 文件,指向客户端下载新应用程序。
我搜索令牌;用链接和令牌替换它:
<replace file="index.html" >
<!-- this searches for literal text ${MyTOKEN} -->
<!-- does not "expand" ${MyTOKEN} before searching -->
<replacetoken>${MyTOKEN}</replacetoken>
<replacevalue>"some link" <br> ${MyTOKEN}</replacevalue>
</replace>
此代码不能移动到模板构建脚本中,因为replacetokenandreplacevalue标记将文本作为文字 - 它们不在expandproperties我的 ANT 版本中。
我想使用属性来定义"some link"和MyTOKEN值。
使用属性的解决方法"some link"是使用 afilterchain并在替换后复制文件:
<copy file="index.html" tofile="index2.html" >
<filterchain>
<!-- this converts the ${xxx} properties into their values -->
<expandproperties />
</filterchain>
</copy>
但这replace在完成之后才有效 - 所以这意味着我仍然需要将MyTOKEN值直接硬编码到构建脚本中。
- 我想在构建脚本之外定义我的令牌,并在构建脚本中引用它。
- 我怎么做?
更新:我应该使用和创建自己的任务replace吗?我不太理解这种方法,但它看起来像这样。copyfilterreaderfilterchain
更新扩展接受的答案:我最初使用<replacetoken>&<replacevalue>方法,因为我需要我的值跨越多行。
通过使用token& value,我无法找到换行的方法。
放置换行符的解决方案是${line.separator}用作换行符。请参阅Echo Task上的文档。
另外,这里是一些更有用(离题)的 ANT 属性的页面:内置 Ant 属性。