首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ant中属性文件中的变量

Ant中属性文件中的变量
EN

Stack Overflow用户
提问于 2012-05-25 08:33:01
回答 1查看 2.3K关注 0票数 1

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

我想把所有不同的参数放到一个单独的属性文件中,并为每个参数加上它匹配的环境的前缀。

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

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

代码语言:javascript
复制
<property file="parameters.properties" prefix="params" />

要使用属性,我使用:

代码语言:javascript
复制
${params.home-url}

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

代码语言:javascript
复制
${params.${env-prefix}.home-url}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-25 09:06:47

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

How can I do something like (double expanding the property)?

下面的Ant构建文件的灵感来自于该FAQ。

parameters.properties

代码语言:javascript
复制
dev.home-url = http://home_dev.com
prod.home-url = http://home.com

build.xml

代码语言:javascript
复制
<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任务输出:

代码语言:javascript
复制
Buildfile: /workspace/build.xml
example:
     [echo] http://home_dev.com
BUILD SUCCESSFUL
Total time: 405 milliseconds
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10747065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档