2011-06-19 54 views
1

我有螞蟻目標,它同時調用其他3個項目ant建立目標爲junit。即使任何一個項目構建失敗,此構建目標仍會執行所有三個項目。這裏的問題是,如果任何一個編譯失敗錯誤消息應該在編譯三個項目編譯目標後顯示,但它沒有發生,我該如何解決?螞蟻任務在不同的項目中生成多個目標

<target name="mainbuild"> 
<antcall target="junit-1">//in different project 
<antcall target="junit-2">//in different project 
<antcall target="junit-3">//in different project 
<junitreport todir="./reports"> 
    <fileset dir="./project-1/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <fileset dir="./project-2/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <fileset dir="./project-3/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <report format="frames" todir="./report/html"/> 
</junitreport> 
</target> 

<target name="junit-1"> 
.... do somethig 
</target> 
<target name="junit-2"> 
.... do somethig 
</target> 
<target name="junit-3"> 
.... do somethig 
</target> 

1)主構建調用3項目,即使生成失敗在副項目中的任何一個,在結束建立成功的消息顯示,如果任何一個它不應該發生

2)子項目構建失敗,生成報告應該生成,以便開發人員可以進一步分析他的失敗。

回答

0

既然您已經說明您的目標位於不同的項目中,即不同的構建文件,您將不得不使用antsubant任務而不是antcallsubant任務有一個名爲failonerror的參數,您可以將其設置爲false,以便失敗不會停止頂層構建。我不知道是否有可能傳回頂層構建的子項目構建實際上未通過測試的信息。

如果你的目標都在同一個項目,你可以改變你的junit任務,這樣,如果測試失敗,他們不會失敗,而是設置一個屬性表明已經發生了故障:

<junit failureProperty="test.failed"> ... </junit> 

然後你就可以讓你的mainbuild目標無法生成JUnit的報告後:

<fail if="test.failed"> ... </fail> 

我從書「螞蟻在行動」得知這個。