【问题标题】:Dynamically build file name in AntAnt中动态构建文件名
【发布时间】:2015-09-22 13:03:46
【问题描述】:

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

【问题讨论】:

    标签: ant


    【解决方案1】:

    首先,&lt;for&gt; 需要在其下嵌套一个 &lt;sequential&gt;

    其次,${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
    

    【讨论】:

    • 不幸的是,这也不起作用。我使用 任务对此进行了测试。据此,该文件不可用。
    • @Neriyan:我已经编辑了我的答案。在&lt;for&gt; 下需要&lt;sequential&gt; 元素。此外,.properties 文件扩展名是必需的。
    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2014-10-29
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多