[譯]使用屬性去控制構建(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 會飛的魚 閱讀(229) 評論(0)  編輯  收藏 所屬分類: Ant

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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          友情鏈接

          開源鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新竹市| 盐源县| 高阳县| 永州市| 洪江市| 巫山县| 吴江市| 九台市| 攀枝花市| 察隅县| 吉木乃县| 迭部县| 习水县| 仙桃市| 宁蒗| 白朗县| 林周县| 保康县| 龙海市| 巍山| 常德市| 阿图什市| 嵩明县| 鸡西市| 厦门市| 赤城县| 镇远县| 内丘县| 密山市| 江永县| 威远县| 天水市| 云霄县| 惠安县| 余干县| 南城县| 宜章县| 乌拉特前旗| 兴隆县| 法库县| 阜新市|