我有一个Android应用程序,需要为不同的环境(例如,UAT,staging,production等)构建。每个环境需要不同的属性(例如,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}发布于 2012-05-25 09:06:47
关于Ant的一个常见问题是:
How can I do something like (double expanding the property)?
下面的Ant构建文件的灵感来自于该FAQ。
parameters.properties
dev.home-url = http://home_dev.com
prod.home-url = http://home.combuild.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 millisecondshttps://stackoverflow.com/questions/10747065
复制相似问题