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