自動化構建流程分為多個環節,各環節互為前提條件。 本文所介紹的構建框架將構建過程中的每個環節封裝為 Ant 腳本的子任務,通過 Build 主任務來進行調度。 關於 Build 主任務以及構建腳本框架的創建已經在本系列的第 1 部分中進行了介紹,本文主要對代碼的構建流程進行詳細介紹。 讀者可以參考本文的代碼示例,完成代碼中剩餘部分 , 從而實現完整的構建框架。 在編寫構建腳本時,讀者可能需要自訂一些 Ant 標籤,這些自訂標籤的 JAVA 代碼可統一打包成 jar 檔,並存放于 <Build Script>/lib 目錄下,在 build.xml 檔中通過 <taskdef& gt; 標籤來聲明自訂標籤。 ( 本文需要讀者在具有一定的 Ant 腳本知識和 JAVA 編寫經驗的基礎上進行閱讀。 )
圖 1. 自動化構建流程
提取增量代碼
對於增量代碼的構建,第一步就是將新增加的代碼從代碼庫中抽取出來,目前市面上通用的代碼庫管理工具(SCM)有很多。 增量代碼的構建需要代碼管理工具有很好的代碼HTTP://www.aliyun.com/zixun/aggregation/9591.html">版本控制的功能,並且能夠提供命令列的運行方式, 這樣便於整個構建流程的自動化執行,當然這一步驟也可以由手工完成。 在構建框架中讀者需要將符合條件的代碼從代碼庫中抽取出來並存放在制定目錄下。
在本文所介紹的構建框架中,增量代碼存儲在 extract 目錄下。 為了便於區別不同版本的增量代碼,可使用時間戳或者 build 標籤進行標記,時間戳記或者 build 標籤可作為參數在啟動構建過程時以參數的形式輸入。 讀者需要在構建腳本中定義相應的變數,從而實現輸入變數的讀取。 例如清單 1 中 Ant 命令就是將 build label 作為參數輸入到 Ant 腳本中。
清單 1. 啟動 Ant 腳本時輸入參數
<Build Scirpt>/ant – buildfile build.xml – Dbuildlabel buildlabel
對於代碼抽取的條件,讀者可以配置在 build.properties 檔中 , 下面只給出偽代碼示例。 讀者可參考清單 2 完成該部分的腳本,並將其定義為子任務,並添加到主任務中去。
清單 2. 代碼抽取腳本
<target="commone.extract_files" /> <!-- 1. 從 build.properties 檔中獲取增量代碼的版本資訊(該資訊主要適用于多版本開發的產品) 2. 從 build.propetties 檔中獲取增量代碼所關聯的最小單位資訊(如 defect 號 或者 task 號) 注:任何代碼檔導入到代碼庫時,都需要對應一個任務號或者是 defect 號。 這樣代碼管理工具可以對不同時 間導入代碼庫的檔進行區分並管理。 3. 從 build.properties 檔中讀取 build label 或者 從輸入的參數中讀取。 4. 判斷是否存在同樣 build lable 的目錄,如果存在則刪除。 如果不存在則新建。 5. 連接 SCM 管理工具,啟動命令列執行代碼抽取 - -> </ target >
代碼在代碼庫中的存放路徑可能各不相同。 在本文中需要讀者將抽取出來的代碼按照工程中的相對路徑存放。 關於代碼管理的具體內容不是本文介紹的重點,因此讀者需要諮詢產品的建構管理團隊完成該部分的內容,並整合到主任務中去。