Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ant build.xml中动态传递多个值_Ant - Fatal编程技术网

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

在ant build.xml中动态传递多个值,ant,Ant,我正试着做下面的事情 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" /> 因此,在value=“${PRODUCT7\u JBOSS\u INSTANCE}”内部我希望动态地传递PRODUCT7,如下所示 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" /> value=“${${PRODUCT\

我正试着做下面的事情

 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" />
因此,在
value=“${PRODUCT7\u JBOSS\u INSTANCE}”内部
我希望动态地传递PRODUCT7,如下所示

 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" />
value=“${${PRODUCT\u NUMBER}\u JBOSS\u INSTANCE}”
--但这不起作用。因为两个$symbol不起作用。我现在的目标是
PRODUCT\u NUMBER
应该得到
PRODUCT7
的值,然后
PRODUCT7\u JBOSS\u实例
应从文件中获取值,作为
PRODUCT7 JBOSS


你能帮我找到解决这个问题的方法吗?你可以用a来解决这个问题,如问题的答案所示

下面是一个同样适用于您的案例的示例

<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>
输出:

$ 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

重复感谢您提供的方法。如果您在build.xml中指定以下行,当我试图从属性文件中读取相同内容时,上面的工作非常完美,它不起作用,并提供值作为{PRODUCT5_JBOSS_INSTANCE},它对我有效。我更新了示例以加载属性。我认为您得到的结果表明,要么您没有加载所需的属性文件,要么属性键与预期的不同。是的,我使用了错误的属性文件。现在它工作得很好。非常感谢
$ 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