2016-07-29 59 views
0

我包括一個屬性文件,其中有屬性的列表:後綴添加到列表用foreach

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> 

,並在foreach簡單地後:

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

由於某些原因,這些屬性不會在foreach中被覆蓋,我只是無法找出原因,但是這個小訣竅爲我所用。