一、概述
默认情况下,Ant是不支持属性值的嵌套括号的解析的。但是可以通过其他一些变通方式来达到目的。
二、解决方法
假设构建文件中已经存在名称为a值为A的属性,希望类似${a${B}}的方式进行属性的设置。设置后的属性名为AB,值为ab。有如下几种方法:
- 通过<script/>设置属性值
<script language="javascript"> propa = project.getProperty("a"); project.setNewProperty(propa+"B", "ab"); </script>
- Ant1.6以上版本可以通过<macrodef/>设置属性值
<macrodef name="test"> <attribute name="name"/> <attribute name="value"/> <sequential> <property name="${@{name}}B" value="@{value}"/> </sequential> </macrodef> <test name="a" value="ab"/>
- 通过第三方插件Flaka读取属性值
<project xmlns:fl="antlib:it.haefelinger.flaka"> <fl:install-property-handler/> <property name="foo" value="foo.value"/> <property name="var" value="foo" /> <property name="buildtype" value="test"/> <property name="appserv_test" value="//testserver"/> <echo> #{${var}} = foo.value <!-- nested property --> #{appserv_${buildtype}} </echo> </project>