2016-07-29 8 views
0

Ich schließe eine .properties-Datei, die eine Liste von Eigenschaften aufweist:Hinzufügen Suffix zu einer Liste mit foreach

configuration.files = file1, file2 

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

Jetzt brauche ich die Pfade für jede Datei in etwa so geändert:

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

um das zu erreichen, habe ich versucht, diese Liste foreach und dass Suffix voranstellen und das Überschreiben der vorhandenen Eigenschaft:

<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> 

Das funktioniert nicht und ich kann nicht herausfinden warum. Ist es sogar möglich, Zielnamen wie $ {suffix} .name zu verwenden? Wenn nicht, wie könnte ich hier mein Ziel erreichen?

Antwort

0

Ich habe gerade etwas Abhilfe für dieses, um die Eigenschaften zu schreiben und ihre Werte in einer Datei und readin sie, nachdem die Schleife mit override = true beendet hat:

<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> 

und nach dem foreach einfach:

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

Aus irgendeinem Grund werden die Eigenschaften nicht in der Foreach überschrieben und ich kann nicht herausfinden, warum, aber dieser kleine Trick hat es für mich gemacht.