ant - 如何获取名称在另一个属性中的内容?

时间:2013-04-26 10:33:41

标签: ant

我有一个包含一些变量和值的属性文件:

ALL_WAR=*
CONS_WAR=cons-webapp.war
MAJ_WAR=maj-webapp.war
STATS_WAR=stats-webapp.war

我想通过阅读我的脚本参数来获取其中一个变量的内容。我的意思是:

我会使用以下命令启动我的脚本:

ant -f install.xml -Dservice=ALL

我的脚本会是这样的:

INSTALL.XML

...

<property name="war.file" value="${service}_WAR"/>

...
<copy todir="/tmp/auri">
     <fileset dir="${DELIVER_WEBAPP_DIR}" includes="${${war.file}}"/>
</copy>

$ {$ {war.file}}声称获取属性文件中定义的变量之一的内容。我不知道这是不可能的,也不知道怎么做。

提前感谢您的帮助!

金叶

1 个答案:

答案 0 :(得分:0)

请参阅Ant FAQ double expanding properties,这是一个使用Ant插件Flaka的解决方案:

以-Dservice = ALL

开头
<project xmlns:fl="antlib:it.haefelinger.flaka">
<!-- activate flaka property handler -->
<fl:install-property-handler/>

<property name="ALL_WAR" value="all-webapp.war"/>
<property name="war.file" value="${service}_WAR"/>

<echo>#{property[property['war.file']]}</echo>
</project>

将输出=​​&gt;全webapp.war
请注意语法property['...']而不是${...},因为${war.file}中的点,来自EL语法, 有关详细信息,请参阅http://code.google.com/p/flaka/issues/detail?id=17

这意味着如果使用propertyname warfile而不是war.file,你可以写:

<project xmlns:fl="antlib:it.haefelinger.flaka">
<!-- activate flaka property handler -->
<fl:install-property-handler/>

<property name="ALL_WAR" value="all-webapp.war"/>
<property name="warfile" value="${service}_WAR"/>

<echo>#{${warfile}}</echo>
</project>