首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ant build.xml中动态传递多个值

在ant build.xml中动态传递多个值
EN

Stack Overflow用户
提问于 2012-06-15 15:33:36
回答 1查看 5.2K关注 0票数 0

我试着做一些类似下面的事情..

代码语言:javascript
运行
复制
 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" />

PRODUCT5_JBOSS_INSTANCE-takes来自属性文件的键名的值,所以当我给出上面的INSTANCE_NAME = product5-jboss值时。

但是对于不同的产品,上面的代码重复多次,比如

代码语言:javascript
运行
复制
  <property name="INSTANCE_NAME" value="${PRODUCT6_JBOSS_INSTANCE}" />
   <property name="INSTANCE_NAME" value="${PRODUCT7_JBOSS_INSTANCE}" />

所以在value="${PRODUCT7_JBOSS_INSTANCE}"中,我想像下面这样动态地传递product7。

value="${${PRODUCT_NUMBER}_JBOSS_INSTANCE}" --但这不会work.Because两个$ symbols也不会work.My目标现在是PRODUCT_NUMBER应该以PRODUCT7形式获取值,然后PRODUCT7_JBOSS_INSTANCE应该以product7-jboss形式从文件中获取值

你能帮我找到解决这个问题的方法吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 17:24:26

您可以使用问题Variables from properties file in Ant的答案中所示的macrodef来解决此问题。

这里有一个与您的案例相同的示例。

代码语言:javascript
运行
复制
<project default="test">

    <!-- override on command line -->
    <property name="PRODUCT_NAME" value="PRODUCT5"/>

    <property file="test.properties"/>

    <macrodef name="property-read">
        <attribute name="name"/>
        <attribute name="from"/>
        <sequential>
            <property name="@{name}" value="${@{from}_JBOSS_INSTANCE}"/>
        </sequential>
    </macrodef>

    <target name="test">
        <echo>PRODUCT_NAME: ${PRODUCT_NAME}</echo>
        <property-read name="instance" from="${PRODUCT_NAME}"/>
        <echo>DYNAMIC PROPERTY VALUE: ${instance}</echo>
    </target>

</project>

属性定义:

代码语言:javascript
运行
复制
$ cat test.properties
PRODUCT5_JBOSS_INSTANCE=product5.jboss.instance
PRODUCT7_JBOSS_INSTANCE=product7.jboss.instance

输出:

代码语言:javascript
运行
复制
$ ant -DPRODUCT_NAME=PRODUCT7
Buildfile: C:\Users\sudocode\tmp\ant\build.xml

test:
     [echo] PRODUCT_NAME: PRODUCT7
     [echo] DYNAMIC PROPERTY VALUE: product7.jboss.instance

BUILD SUCCESSFUL
Total time: 0 seconds
$
$
$ ant -DPRODUCT_NAME=PRODUCT5
Buildfile: C:\Users\sudocode\tmp\ant\build.xml

test:
     [echo] PRODUCT_NAME: PRODUCT5
     [echo] DYNAMIC PROPERTY VALUE: product5.jboss.instance

BUILD SUCCESSFUL
Total time: 0 seconds
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11046433

复制
相关文章

相似问题

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