2013-07-31 59 views
0

我遇到了有關構建腳本的問題。目前我有一個主build.xml文件,它調用目錄中的每個內部build.xml文件。內部build.xml有兩個階段來執行,最後我得到一個jar文件。 我的要求是,如果在內部build.xml文件的第一步中出現任何問題,我不應該得到jar文件,但是主構建應繼續執行並轉到下一個內部build.xml文件。 在基於某些條件的內部build.xml中,我想停止內部構建。應該在代碼中進行哪些更改以停止特定構建? 在此先感謝。僅停止構建腳本的一部分

+1

您正在使用哪種構建系統?這聽起來像是Ant,但這是一些非常重要的信息。 –

回答

0

如果您可以負擔將ant-contrib添加到您的版本,那麼很容易。在你的主要任務中,請執行以下操作:

<target name="xxx"> 
    <var name="firstStepOK" value="true"/> 
    <trycatch> 
     <try> 
      <!-- call first sub build --> 
     </try> 
     <catch> 
      <var name="firstStepOK" value="false"/> 
     </catch> 
    </trycatch> 
    <!-- call second sub build, pass value of firstStepOK --> 
</target> 

不幸的是,ant-contrib從來沒有將它變成適當的東西,這太可惜了。它包含非常有用的任務。

+6

螞蟻是有點愚蠢 - 在後見之明xml是一個螞蟻的糟糕的決定。 Ant並不是一種腳本語言,而是一系列聲明,任務繁重(用java編寫)。 Ant-contrib並沒有解決螞蟻的愚蠢,而是讓它們變得更糟。 ant-contrib通常會導致構建可維護性差的文件。讓螞蟻成爲螞蟻,不要試圖讓它成爲一種腳本語言 - 它總是會吸引人(可以說它也是一種構建定義語言) – thekbb

+0

@thekbb我不同意。 ant-contrib是向ant本身注入某種感覺的唯一方式(例如'var' - 我總是無法理解使屬性不變的原因)。我不明白,-1。我的解決方案Just Works(tm)。無論如何,從那以後,我改用了gradle。 – fge

+1

我們的態度比我們的意見分歧更大。這很難,因爲我認爲我們都想說「不要使用螞蟻」,但這對OP沒有幫助。我的答案應該是更像這個舊的「:http://stackoverflow.com/a/6301879/505191(鏈接是體面的)。我低估了,因爲我真的相信這不是一個好主意,並且想表明這一點(OP),更重要的是許多人會發現這個問題(我將來可能最終會與誰合作)。我的意思是沒有個人冒險行爲。我非常喜歡這個網站,並且相信當我們投票更多時(特別是低估投票) – thekbb

5

將設置爲failonerror="false"用於調用其他構建文件。

+0

編輯點評:我不建議這樣做......你想知道什麼時候構建失敗,這種破壞會消除你所有的可見性,如果你想在失敗時構建一些項目 - 將它們分成多個構建版本(或者不要從通用構建文件中調用它們)。 – thekbb