有条件地在Ant中加载属性文件

时间:2016-04-06 10:55:52

标签: ant

我的Ant脚本应该下载一个ZIP文件,其中包含要安装在数据库(Oracle或PostgreSQL)中的设置文件并生成转储。根据设置文件中提供的属性数据生成不同的转储。

我有3个属性文件:

  1. user.properties:这包含Jenkins提供的各种详细信息,除此之外还有一个值:prepare.MTdump.generate=true
  2. nonMT.properties
  3. MT.properties
  4. 是否可以在Ant中加载第一个属性文件user.properties并根据条件(例如,如果prepare.MTdump.generate=true)加载MT.properties或者加载nonMT.properties假加载{{} 1}}?

    我无法添加IF条件来加载属性文件。我甚至尝试使用unless <target>条件,但未能达到要求。

1 个答案:

答案 0 :(得分:1)

如果你使用ant-contrib,这应该有效:

<property file="user.properties"/>
<if>
    <equals arg1="${prepare.MTdump.generate}" arg2="true"/>
    <then>
        <property file="MT.properties"/>
    </then>
    <else>
        <property file="nonMT.properties"/>
    </else>
</if>

否则,你可以只使用条件。只需运行下面的loadProperties目标。

<property file="user.properties"/>

<target name="test.if.use.MT">
    <condition property="useMT">
        <equals arg1="${prepare.MTdump.generate}" arg2="true"/>
    </condition>
    <condition property="useNonMT">
        <not>
            <equals arg1="${prepare.MTdump.generate}" arg2="true"/>
        </not>
    </condition>
</target>

<target name="loadMTProperties" if="${useMT}" depends="test.if.use.MT">
    <property file="MT.properties"/>
</target>

<target name="loadNonMTProperties" if="${useNonMT}" depends="test.if.use.MT">
    <property file="nonMT.properties"/>
</target>

<target name="loadProperties" depends="loadMTProperties, loadNonMTProperties"/>