[譯]使用屬性去控制構(gòu)建(Using Properties to Control a Build)

          [ ] 使用屬性去控制構(gòu)建( Using Properties to Control a Build

          ??????????????????????????? ??????? ---- 取自 <<Pro Apache Ant>>

          ?

          為了匹配一個復雜的工程,任何構(gòu)建都可能變得復雜。但是,你也許不總是想要執(zhí)行構(gòu)建的每個部分,或者說如果條件滿足的話,你也許想要僅僅執(zhí)行某個特定的部分。當然你能夠通過使用目標依賴來創(chuàng)建一個構(gòu)建序列,這就意味著你能將目標鏈接起來。使用這個機制,你甚至能夠集成條件,而這些條件會導致這個構(gòu)建過程交叉起來,并且會創(chuàng)建不同的發(fā)布。例如,示例應用程序有一個 stand-alone Java 客戶端和基于 Web 的接口,盡管它們共享了數(shù)據(jù)庫連接的代碼。為這個應用程序的兩個部分所做的構(gòu)建起始于分離這兩個部分前的共通代碼,而分離取決于你所構(gòu)建的是哪個部分。


          下圖顯示了這種情形:

          ?

          ?r_1.bmp


          使用依賴來模擬這個構(gòu)建過程是足夠的簡單。這樣,你總是可以對 stand-alone 目標簡單地設置 depends 特性( attributes )來依賴共通代碼的構(gòu)建。對于 Web 應用程序目標也是一樣的。

          ?

          一個可以替換的方案是使用 <target> 的最后兩個特性: if unless 。這兩個特性會影響到一個目標是否運行,并且運行與否會取決于屬性。設置 if 到一個屬性名意味著如果屬性被設置了,那么目標應該會運行。設置 unless 到一個屬性名意味著目標應該會運行除非該屬性被設置了。而該屬性有什么值并不重要,只要它被設置了。在 Ant 中不存在 null 。



          NOTE if unless 特性中設置的值應該是一個屬性名,不是該屬性包含的值。不要使用 ${ } ,除非你真的要設置一個屬性名作為另一個屬性的值。

          ?



          如果 if unless 都設置了相同的屬性名,那么 if 會重載 unless ,盡管你沒有絕對的理由想這么做。你也應該要意識到這些設置不會影響在 depends 特性中目標的運行。

          ?

          但是,應用程序的構(gòu)建并不總是這么簡單。例如,你也許想要獲取并構(gòu)建第三方的庫,只有當你沒有它們時。這就意味著 Ant 將必須檢查某個特定的文件是否存在 build 目錄結(jié)構(gòu)中;如果文件存在,那么 Ant 將跳過上圖中的前兩個步驟。這就帶來了控制構(gòu)建的第一個元素: <availabe> 。

          posted on 2007-01-05 19:22 會飛的魚 閱讀(229) 評論(0)  編輯  收藏 所屬分類: Ant

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          友情鏈接

          開源鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 遂昌县| 吴川市| 惠来县| 武宣县| 辉县市| 大同市| 杨浦区| 雷州市| 牟定县| 渝北区| 西乌| 瑞丽市| 嵩明县| 大竹县| 永德县| 那坡县| 孙吴县| 元氏县| 东方市| 塘沽区| 凌云县| 北京市| 阳西县| 休宁县| 井研县| 岢岚县| 阜宁县| 雅江县| 梁河县| 台中县| 吕梁市| 东辽县| 龙海市| 郴州市| 思茅市| 南阳市| 黑河市| 青河县| 宁陕县| 佛教| 井陉县|