2010-05-24 48 views
0

我爲Oracle Forms文件的自動編譯構建了一個構建文件。代碼的摘錄如下:關於<foreach>任務和failonerror屬性的問題

<target name="build" description="compiles the source code"> 

... 

    <foreach item="File" property="filename" failonerror="false" > 
    <in> 
     <items basedir="${source.directory}\${project.type}\Forms"> 
     <include name="*.fmb" /> 
     </items> 
    </in> 
    <do> 
     <exec program="${forms.path}" workingdir="${source.directory}\${project.type}\Forms" commandline="module=${filename} userid=${username}/${password}@${database} batch=yes module_type=form compile_all=yes window_state=minimize" /> 
    </do> 
    </foreach> 

... 

</target> 

構建文件導航到包含用戶希望FO編譯並試圖編譯每個表格形式的目錄。 failonerror屬性設置爲false,以便在發生編譯錯誤時不會退出構建文件。然而,不幸的是,雖然這可以防止編譯錯誤發生時編譯文件退出,但它似乎也使編譯文件退出該任務。這是一個問題,因爲除非沒有成功編譯的表單是最後一個被測試的表單(基於字母數字解析順序的表單文件名),否則會有一個或多個表單構建文件不會嘗試編譯。因此,例如,如果包含希望編譯的表單的文件夾包含10個表單,且第一個表單不能成功編譯,則構建文件將不會嘗試編譯剩餘的9個表單(即退出任務)。有沒有辦法讓編譯文件試圖在遇到無法編譯表單之後編譯剩餘的表單?提前致謝!

回答

0

道歉,現在已經解決了。問題是你需要在任務中設置「failonerror」。