2013-04-26 1 views
0

У меня есть файл свойств с некоторыми переменными и значениями: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}}, чтобы получить содержимое одной из переменных, определенных в файле свойств. Я не знаю, если это невозможно или как это сделать.

Заранее благодарим за вашу помощь!

Ауреа

ответ

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> 

выход будет => все-webapp.war
Обратите внимание на синтаксис property['...'] вместо ${...} из-за точек в ${war.file},
o основанный на синтаксисе EL, см. 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> 
Смежные вопросы