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

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

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

          ?

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


          下圖顯示了這種情形:

          ?

          ?r_1.bmp


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

          ?

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



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

          ?



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

          ?

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

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

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          友情鏈接

          開源鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桦甸市| 建昌县| 南和县| 宣恩县| 名山县| 澜沧| 汉阴县| 红桥区| 双辽市| 安吉县| 肥城市| 石渠县| 祁东县| 南部县| 越西县| 胶州市| 东山县| 孝义市| 岗巴县| 乐昌市| 九台市| 留坝县| 荆州市| 探索| 巫山县| 平湖市| 册亨县| 七台河市| 澄江县| 横峰县| 自治县| 巴楚县| 株洲县| 托克逊县| 永康市| 增城市| 中江县| 大埔县| 西充县| 洱源县| 得荣县|