构建后,我需要修改一个 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>
此代码不能移动到模板构建脚本中,因为replacetoken
andreplacevalue
标记将文本作为文字 - 它们不在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
吗?我不太理解这种方法,但它看起来像这样。copy
filterreader
filterchain
更新扩展接受的答案:我最初使用<replacetoken>
&<replacevalue>
方法,因为我需要我的值跨越多行。
通过使用token
& value
,我无法找到换行的方法。
放置换行符的解决方案是${line.separator}
用作换行符。请参阅Echo Task上的文档。
另外,这里是一些更有用(离题)的 ANT 属性的页面:内置 Ant 属性。