我有一个需要针对不同环境(例如,UAT,登台,制作等)构建的Android应用程序。每个环境都需要不同的属性(例如,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}
答案 0 :(得分:6)
关于Ant的常见问题是:
以下Ant构建文件的灵感来自该FAQ。
<强> parameters.properties 强>
dev.home-url = http://home_dev.com
prod.home-url = http://home.com
<强>的build.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