1. 程式人生 > >Introduce of build tool/maven

Introduce of build tool/maven

strong intro 由於 標準化 tps 獲取 例如 組件 實現

什麽是build tool:

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

理解構建工具中組建的交互、構建邏輯和實際定義,以及輸入輸出的數據是非常重要的。

構建文件

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

構建的輸入和輸出

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

構建引擎

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

構建管理器

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

Maven

Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。 Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。由於 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。由於 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目采用 Maven 的比例在持續增長。 Maven這個單詞來自於意第緒語(猶太語),意為知識的積累,最初在Jakata Turbine項目中用來簡化構建過程。當時有一些項目(有各自Ant build文件),僅有細微的差別,而JAR文件都由CVS來維護。於是希望有一種標準化的方式構建項目,一個清晰的方式定義項目的組成,一個容易的方式發布項目的信息,以及一種簡單的方式在多個項目中共享JARs。

Introduce of build tool/maven