在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