Bazel 是與 Make、Maven 和 Gradle 類似的開放原始碼開放原始碼和測試工具。使用人類可讀的高階建構語言。Bazel 支援多種語言的專案,並跨多個平台建構輸出內容。Bazel 支援多個存放區的大型程式碼集,以及大量使用者。
優點
Bazel 提供下列優點:
高階建構語言:Bazel 使用抽象且易於理解的語言,在高語意等級說明專案的建構屬性。Bazel 不同於程式庫、二進位檔、指令碼和資料集的「概念」,不需要您向個別呼叫編寫工具 (例如編譯器和連結器) 的麻煩。
Bazel 快速又可靠。Bazel 會快取所有先前完成的工作,並追蹤檔案內容與建構指令的變更。這樣一來,Bazel 就會知道需要重新建構,並重新建立建構作業。如要進一步加快建構速度,您可以設定專案,以極平行和漸進式的方式建構。
Bazel 是多平台功能。Bazel 會在 Linux、macOS 和 Windows 上執行。Bazel 可以從同一個專案內為多個平台 (包括電腦、伺服器和行動裝置) 建構二進位檔和可部署套件。
Bazel 的資源調度作業。Bazel 維持靈活彈性,同時處理超過 10 萬個來源檔案的建構項目。可支援數以萬計的存放區和使用者群。
Bazel 是可擴充的。系統支援許多語言,您可以擴充 Bazel 以支援任何其他語言或架構。
使用 Bazel
如要透過 Bazel 建構或測試專案,您通常會:
設定 Bazel。下載並安裝 Bazel。
編寫
BUILD
檔案,告知 Bazel 建構的內容和建構方式。請使用 Starlark (網域特定語言) 宣告建構目標,以編寫
BUILD
檔案。(請參閱這裡的範例)。建構目標會指定 Bazel 將建構的一組輸入構件及其依附元件、Bazel 用來建構建構的建構規則,以及設定建構規則的選項。
建構規則會指定 Bazel 使用的建構工具,例如編譯器和連接器,以及相關設定。Bazel 隨附幾種建構規則,其中涵蓋了支援平台中支援語言最常用的構件類型。
透過指令列執行 Bazel。Bazel 會將輸出內容放入工作區。
除了建構之外,您也可以使用 Bazel 執行測試,並查詢建構作業,以在程式碼中追蹤依附元件。
Bazel 建構程序
執行建構或測試時,Bazel 會執行下列作業:
由於所有先前建構工作都會快取,因此 Bazel 可以識別並重複使用快取成果,並且只會重新建構或重新測試變更。如要進一步強制執行正確性,您可以設定 Bazel 以選擇性的方式透過沙箱執行建構作業和測試,盡可能減少偏差,並盡可能提高可複製性。
動作圖表
動作圖表代表建構構件、這些構件之間的關係,以及 Bazel 會執行的建構動作。多虧有這張圖表,Bazel 才能追蹤檔案內容的變更,以及對建構或測試指令等動作所做的變更,並得知先前的建構工作。圖表也可讓您輕鬆在程式碼中追蹤依附元件。
入門教學課程
如要開始使用 Bazel,請參閱「開始使用」或直接造訪 Bazel 教學課程: