首页 > 解决方案 > 可以在 Ant 中延迟或阻止属性评估吗?

问题描述

我有一个第三方 Tomcat webapp,它配置了一个ant在部署前处理的 .properties 文件。

一个属性DB.cache.dir定义了一些临时文件的创建位置。我希望这个属性从字面上评估${java.io.tmpdir}为. 目的是在运行 webapp 时将使用运行它的 Tomcat 的 java.io.tmpdir 值,而不是它配置时的值ant

我试图在\没有运气的情况下使用逃生,但在网上找不到答案。

请指教。

# How to prevent evaluation for this property?
DB.cache.dir=${java.io.tmpdir}

标签: tomcatant

解决方案


您需要使用另一个美元符号来转义美元符号,例如:

DB.cache.dir=$${java.io.tmpdir}

来自Ant 文档中的属性、属性扩展、$$ 扩展:

在其默认配置中,Ant 会将文本 $$ 扩展为单个 $ 并抑制紧随其后的文本的正常属性扩展机制,即 $${key} 扩展为 ${key} 而不是 value,即使属性名为键已定义并具有值值。


推荐阅读