在Ant中动态构建文件名

时间:2015-09-22 13:03:47

标签: ant

我有一个要求,我想动态加载属性文件到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。

1 个答案:

答案 0 :(得分:1)

首先,<for>需要嵌套<sequential>

其次,${中的${deploy_@{site}}会导致Ant搜索名为deploy_...的属性。放下周围的${}部分。

第三,缺少.properties文件扩展名。

下面是两个属性文件和一个Ant脚本,它读取属性文件并输出它们的值。

deploy_DEV.properties

key1=value1

deploy_QA.properties

key2=value2

的build.xml

<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