2013-02-14 29 views
2

這裏是我正在嘗試做的事情,我想在構建過程中從我的大量屬性文件中替換名稱和地址,但不幸的是我無法做到這一點,有沒有更好的方法來做這無需複製粘貼foreach兩次。有人可以幫忙嗎?如何爲每個foreach調用多個ant目標

<target name="replace" > 
<foreach target="replace.name,replace.address" param="foreach.file" inheritall="true"> 
    <path> 
       <fileset dir="${build.tmp.dir}/resource"> 
       <!-- some complicated conditions go here --> 
    </path> 
</foreach> 
</target> 

<target name="replace.address"> 
    <echo>replacing #Address# for ${foreach.file}</echo> 
    <replace file="${foreach.file}" token="#Address#" value="${address}" /> 
</target> 

<target name="replace.name"> 
    <echo>replacing #Name# for ${foreach.file}</echo> 
    <replace file="${foreach.file}" token="#Name#" value="${Name}" /> 
</target> 

屬性文件看起來像

name=#Name# 
address=#Address# 

回答

2

foreachtarget是不能承受一個以上的目標名稱。它只遍歷提供的列表,而不是提供的目標。

爲了使實施更幹,你可以

  • 使用for循環,而不是foreach兩個antcall秒;
  • 使用macrodeffor環 - macrodef可以打包幾個螞蟻XML代碼到一個任務性的東西

其實,這兩個目標 - replace.addressreplace.name,你確定你想打電話給他們從命令行? 如果不是,請將它們命名爲-replace.address-replace.name或使用macrodef - 揭示foreach的迭代體不是一種好的做法。

+0

謝謝你的答案。真的很感謝你的努力。 – Radan 2013-02-14 20:20:47

相關問題