我有一个包含一些变量和值的属性文件:
ALL_WAR=*
CONS_WAR=cons-webapp.war
MAJ_WAR=maj-webapp.war
STATS_WAR=stats-webapp.war
我想通过读取我的脚本的参数来获得其中一个变量的内容。我的意思是:
我将用以下命令启动我的脚本:ant -f install.xml -Dservice=ALL
我的脚本应该是这样的:
将要创建
...
<property name="war.file" value="${service}_WAR"/>
...
<copy todir="/tmp/auri">
<fileset dir="${DELIVER_WEBAPP_DIR}" includes="${${war.file}}"/>
</copy>
${${战争。File}}声明获取属性文件中定义的变量之一的内容。我不知道这是不可能的还是怎么做
参见Ant FAQ双扩展属性,使用Ant插件Flaka的解决方案:
<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>
将输出=> all-webapp.war
注意语法property['...']
而不是${...}
,因为${war.file}
中的点,
源自EL语法,详见http://code.google.com/p/flaka/issues/detail?id=17
这意味着如果使用属性名warfile而不是war。可以写入的文件:
<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>