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。
設定專案工作區,讓 Bazel 用來尋找建構輸入內容和
BUILD檔案,以及儲存建構輸出內容的位置。編寫
BUILD檔案,讓 Bazel 知道要建構的內容和建構方式。如要編寫
BUILD檔案,您可以使用網域特定語言 Starlark 宣告建構目標。(請參閱這裡的範例)。建構目標會指定 Bazel 要建構的輸入構件組合及其依附元件、Bazel 用來建構的建構規則,以及設定建構規則的選項。
建構規則會指定 Bazel 要使用的建構工具,例如編譯器和連結器,以及其設定。Bazel 隨附多項建構規則,涵蓋支援平台支援的語言中最常見的構件類型。
透過指令列執行 Bazel。Bazel 會將輸出內容存放在工作區中。
除了建構之外,您也可以使用 Bazel 執行測試及查詢建構,以追蹤程式碼中的依附元件。
Bazel 建構程序
執行建構或測試時,Bazel 會執行以下操作:
由於系統會快取先前的所有建構工作,因此 Bazel 可以識別並重複使用快取的構件,並且只重新建構或重新測試變更的內容。為了進一步強制執行正確性,您可以將 Bazel 設定為透過沙箱強制執行建構作業和測試,將偏差降到最低,盡可能提高可重現性。
動作圖表
該動作圖表代表了建構構件、它們之間的關係,以及 Bazel 將執行的建構動作。透過這個圖表,Bazel 可以追蹤檔案內容的變更,以及對建構或測試指令等動作的變更,以及瞭解之前的建構工作。這個圖表也可讓您輕鬆在程式碼中追蹤依附元件。
入門教學課程
如要開始使用 Bazel,請參閱開始使用或直接跳至 Bazel 教學課程: