2016-07-29 8 views
0

Я включаю файл .properties, который имеет список свойств:Добавление суффикса в список с Еогеаспом

configuration.files = file1, file2 

configuration.files.file1.source  = config/filename1 
configuration.files.file2.source  = config/filename2 

Теперь мне нужно пути для каждого файла меняется на что-то вроде этого:

vendor/project/config/filename1 
vendor/project/config/filename2 

для достижения этой цели, я пытался Foreach этого списка и предварять, что суффикс и перекрывая существующее свойство:

<foreach list="${configuration.files}" target="_prepend-vendor-path" param="file" > 
    <property name="configuration.files.${file}.source" value="/vendor/project/${configuration.files.${file}.source}" override="true"/> 
</foreach> 

<target name="_prepend-vendor-path" > 
    <echo msg="${configuration.files.${file}.source}" /> 
</target> 

Это не работает, и я не могу понять, почему. Возможно ли использовать имена целей, например $ {suffix} .name? Если нет, то как я могу достичь своей цели здесь?

ответ

0

Я просто сделал несколько обходного пути для этого, выписывая свойства и их значение в файл и читают их после того, как цикл закончен с override = true:

<target name="_prepend-vendor-path" > 
    <exec dir="${project.basedir}" command="echo configuration.files.${file}.source = /vendor/project/${configuration.files.${file}.source} >> ${project.temp.config}" passthru="true" checkreturn="true" /> 
</target> 

и после Еогеаспа просто:

<property file="${project.temp.config}" override="true"/> 

По какой-то причине свойства не будут переопределены в foreach, и я просто не могу понять, почему, но этот маленький трюк сделал это для меня.