Ant中能否延迟/阻止属性解析?Tomcat应用配置求助
解决Ant处理.properties文件时保留${java.io.tmpdir}字面量的问题
我刚好踩过这个坑,Ant默认会自动解析.properties里的${}格式变量,所以直接写或者用单个反斜杠转义肯定不管用。这里给你两个靠谱的解决方案:
方法一:在源.properties文件中用双重美元符号转义
Ant的属性解析规则里,$$会被处理成单个$,你只需要把配置项改成这样:
DB.cache.dir=$${java.io.tmpdir}
当Ant处理完这个文件后,最终输出的.properties里就会保留DB.cache.dir=${java.io.tmpdir}的字面量,Tomcat运行时就能正常读取它自身的java.io.tmpdir值了。
方法二:通过Ant的<propertyfile>任务显式控制
如果是用Ant的<propertyfile>任务生成或修改配置文件,直接在<entry>的value字段里用$${}格式即可:
<propertyfile file="your-app-config.properties"> <entry key="DB.cache.dir" value="$${java.io.tmpdir}"/> </propertyfile>
这种方式同样会让Ant输出${java.io.tmpdir}的原始内容,不会提前替换成Ant运行环境下的临时路径。
为什么单个反斜杠没用?
Ant对.properties文件的解析逻辑里,反斜杠\是用来处理换行、空格这类特殊字符的转义,不是用来规避${}变量解析的。所以\${java.io.tmpdir}这种写法只会被Ant当成普通字符+变量,最终还是会把${java.io.tmpdir}替换成Ant环境的临时路径,达不到你想要的效果。
内容的提问来源于stack exchange,提问作者PopGoesTheWza
相关产品推荐
相关产品推荐

