我有一个要求,我想动态加载属性文件到Ant。我有像deploy_DEV.properties,deploy_QA.properties,deploy_UAT.properties等属性文件。当前环境(即dev,QA或UAT作为参数传入)。基于此,我想加载适当的属性文件。我的代码如下:
<for list="${deployEnvs}" param="site">
<property file="${deploy_@{site}}"/>
</for>
然而,这无效。有没有简单的方法来实现这一目标。如果需要,我也可以访问ant-contrib。
答案 0 :(得分:1)
首先,<for>
需要嵌套<sequential>
。
其次,${
中的${deploy_@{site}}
会导致Ant搜索名为deploy_...
的属性。放下周围的${
和}
部分。
第三,缺少.properties
文件扩展名。
下面是两个属性文件和一个Ant脚本,它读取属性文件并输出它们的值。
key1=value1
key2=value2
<project name="ant-properties-files-with-for" default="run" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<target name="run">
<property name="deployEnvs" value="DEV,QA"/>
<for list="${deployEnvs}" param="site">
<sequential>
<property file="deploy_@{site}.properties"/>
</sequential>
</for>
<echo>key1: ${key1}</echo>
<echo>key2: ${key2}</echo>
</target>
</project>
run:
[echo] key1: value1
[echo] key2: value2