1. 程式人生 > >Build tool

Build tool

邏輯 clas 意義 輸入輸出 ftp 允許 使用 你是 http服務

什麽是構建工具

構建工具能夠幫助你創建一個可重復的、可靠的、攜帶的且不需要手動幹預的構建。構建工具是一個可編程的工具,它能夠讓你以可執行和有序的任務來表達自動化需求。假設你想要編譯源代碼,將生成的class文件拷貝到某個目錄,然後將該目錄組裝成可交付的軟件。如下圖所示,展示了所描述場景中任務和它們執行的順序。

技術分享圖片

每個任務都代表著一個工作單元——例如,編譯源代碼。順序是非常重要的。如果所需要的class文件沒有被編譯出來,那麽你是不能夠組建構件的。因此編譯任務必須先被執行。
本質上,任務和它們的相互依賴被模塊化成一個有向非循環圖(DAG)。DAG是計算機科學的一種數據結構,包含下面兩個元素:

節點:一個工作單元;就構建工具而言,它指的是一個任務(例如,編譯源代碼)。
有向邊:有向邊也叫作箭頭,表示點節之間的關系。在這裏,箭頭表示依賴關系。如果一個任務的定義依賴於另一個任務,那麽所依賴的任務就必須先被執行。發生這種情況常常是因為一個任務依賴於另一個任務的輸出。這裏有個例子——要執行任務“組裝可交付軟件”,你需要先執行任務“拷貝class文件到目錄”和“編譯源代碼”。
每個節點都知道自己的執行狀態。一個節點——表示一個任務——只能被執行一次。
作為開發人員,你沒有必要和DAG圖打交道。這個工作是由構建工具來完成的。

構建工具的剖析
理解構建工具中組建的交互、構建邏輯和實際定義,以及輸入輸出的數據是非常重要的。讓我們一起來探討一下構建工具中每一個元素以及它們的職責。

構建文件

構建文件包含了構建所需的配置信息、定義外部依賴,例如第三方類庫,還包含了以任務形式實現某個特殊目的的指令和它們的相互依賴關系。
就如前面的例子——編譯源代碼、拷貝class文件到目錄以及組裝構件——都可以定義在構建文件中。在通常情況下,會使用腳本語言來表達構建邏輯。這就是為什麽一個構建文件也叫做構建腳本的原因。

構建的輸入和輸出

一個任務會接受一個輸入,然後執行一系列步驟,最後產生一個輸出。某些任務也需不需要輸入,也不需要產生一個必要的輸出。在復雜的任務依賴關系中,也許會使用一個依賴任務的輸出作為輸入。例如,我們將源代碼文件作為輸入,將它們編譯為class文件,並組裝成可交付軟件作為輸出。編譯和組裝過程各表示一個任務。只有先編譯了源代碼,組裝可交付軟件才有意義。因此兩任務需要保證它們的順序。

構建引擎

構建文件的一步步指令或者規則集必須被翻譯成構建工具可以理解的內部模型。構建引擎會在運行時處理構建文件,解析任務之間的依賴,設置好執行做需要的全部配置。
一旦內部模型建立好了,引擎就會按照正常的順序去執行一系列任務。某些構建工具還允許你通過API去訪問這個模型,以便運行時獲取構建信息。

構建管理器

依賴管理器用於處理你在build文件中聲明的依賴定義,從工件倉庫(例如,本地文件系統、一個FTP或者HTTP服務器)中解析它們,並使它們對項目可用。一來通常是指外部依賴,一種JAR文件形式的可重用類庫(例如,Log4j對日誌的支持)。該倉庫就像依賴的儲藏所,通過標識符和描述它們,例如名字和版本。一個典型的倉庫可以是HTTP服務器或者本地文件系統。
許多類庫還依賴於其他類庫,這叫做傳遞依賴。依賴管理器可以通過存儲在倉庫中的元信息自動的解析傳遞依賴。但是一個構建工具並不要求提供這樣的依賴管理組件。

技術分享圖片

構建工具 —— 讓項目變得自動化

自動化的好處

項目自動化對於團隊的成功是非常的重要的。如今,發布時間對於市場變得比以前更重要了。能夠以一種可重復、可持續的方式構建和交付軟件是關鍵。接下來看一看項目自動化所帶來的好處:

防止手動介入

不得不手動地執行每一步去實現和交付軟件是耗時且易於犯錯的。坦白地說,作為一個開發人員和管理員,比起編譯過程和拷貝文件,還有更重要的事情要做。我們都是人,難免會犯錯,而且手動加入還會占用你真正做實際事情的時間。軟件開發過程中的任何一步都是能夠且應該被自動化的。

創建可重復的構建

軟件的構建通常都是有預定義和有序的步驟。比如,你需要先編譯源代碼,然後運行測試,最後組裝可交付軟件。你將需要每天一遍又一遍的重復運行相同的步驟。這應該和按一下按鈕一樣簡單。無論是誰在運行該構建,構建過程的結果都應該是可重復的。

讓構建攜帶

你可以發現,能夠在IDE(集成開發環境)中運行的構建是非常有限的。首先,你必須將特定的產品安裝在機器上。其次,IDE也許只適用於某一種操作系統。一個自動化構建不應該依賴於特定的運行環境才能工作,無論是操作系統還是IDE。最佳的方式應該是,自動化任務從命令行運行,它允許你在任何時間和任何一臺想要運行構建的機器上運行。

Build tool