我有一个包含一些变量和值的属性文件:
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}}声称获取属性文件中定义的变量之一的内容。我不知道这是不可能的,也不知道怎么做。
提前感谢您的帮助!
金叶
答案 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>