2012-05-14 50 views
4

如果出現編譯錯誤,ant javac任務將不編譯所有可編譯的類。似乎javac任務(或編譯器本身)只要遇到第一個錯誤就會停止。ant:在編譯錯誤的情況下儘可能編譯大多數類

failonerror屬性對此行爲沒有任何影響。 我沒有設置compile屬性(因此,使用Oracle JDK的編譯器)。

在編譯錯誤的情況下是否可以編譯爲儘可能多的類?
(最好不依賴於任何特定的編譯器)

一個用例,這是發展過程中:
試想一下,你正在實施一些新的功能,但你沒有完成,編譯錯誤仍。
與此同時,您需要修復其他一些錯誤並確保沒有任何問題被破壞,您希望執行由IDE的項目工作區中的ant任務調用的標準測試套件。 ant任務嘗試編譯所有類/測試類,但由於您剛開發的類中存在編譯錯誤而導致失敗。

告訴ant/javac在編譯錯誤時不會失敗,以便能夠儘可能多地執行測試用例。

+1

您正在尋找的行爲非常不尋常。如果你解釋一下你爲什麼想要這樣的行爲,你可能有更好的運氣尋找解決方案...... – vaughandroid

+0

@Baqueta我已經更新了這個問題。 – MRalwasser

回答

3

ant無關,它的javac會在出錯時停止並且永遠不會給你任何類文件。 failonerror屬性只是說如果編譯應該繼續或停止編譯發回錯誤。

自1.3:http://docs.oracle.com/javase/1.3/docs/tooldocs/tools-changes.html

「當新的1.3編譯器在編譯期間檢測在源文件中的錯誤,它會繼續解析剩下的源文件,並試圖找出任何進一步的錯誤,他們可能包含代碼。生成在編譯的其餘部分完全被抑制,但是,並且不會生成類文件,即使對於不包含錯誤的編譯單元。「

你可能想使用一些其他編譯器,如jikes。但是真的,誰會希望部分編譯的類能夠運行?