Ant 中属性文件中的变量



我有一个Android应用程序,需要为不同的环境(例如,UAT,暂存,生产等)构建。每个环境都需要不同的属性(例如,URL、包等)。

我想将所有不同的参数放入一个属性文件中,并在每个参数上加上它匹配的环境前缀。

例如,属性文件将包含开发环境的dev.home-url = http://home_dev.com和生产环境的prod.home-url = http://home.com

我使用下面的属性创建一个指向前缀为 params 的属性文件的属性:

<property file="parameters.properties" prefix="params" />

要使用属性,我使用:

${params.home-url}

当我需要将环境的前缀添加到参数时,问题就来了。它最终看起来像这样,这显然是做不到的:

${params.${env-prefix}.home-url}

关于 Ant 的一个常见问题是:

我怎样才能做一些类似<property name="prop" value="${${anotherprop}}"/>的事情(双重扩展属性)?

以下 Ant 构建文件的灵感来自该常见问题解答。

参数.属性

dev.home-url = http://home_dev.com
prod.home-url = http://home.com

构建.xml

<project default="example">
    <property name="env-prefix" value="dev" />
    <property file="parameters.properties" prefix="params" />
    <macrodef name="propertycopy">
        <attribute name="name" />
        <attribute name="from" />
        <sequential>
            <property name="@{name}" value="${@{from}}" />
        </sequential>
    </macrodef>
    <target name="example">
        <propertycopy name="local.property" from="params.${env-prefix}.home-url" />
        <echo>${local.property}</echo>
    </target>
</project>

执行example任务输出:

Buildfile: /workspace/build.xml
example:
     [echo] http://home_dev.com
BUILD SUCCESSFUL
Total time: 405 milliseconds

相关内容

  • 没有找到相关文章

最新更新