0

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

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

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

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

ant -f install.xml -Dservice=ALL

我的脚本会是这样的:

安装.xml

...

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

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

${${war.file}} 声称获取属性文件中定义的变量之一的内容。我不知道这是否不可能或如何做到这一点。

4

1 回答 1

0

请参阅Ant 常见问题解答双扩展属性,使用 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>

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

这意味着如果使用属性名 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>
于 2013-04-26T12:11:41.167 回答