Bazel 簡介

回報問題 查看來源 。 。 夜間。 。 7.3 。 。 7.2 。 。 7.1 。 。 7.0 。 。 6.5

Bazel 是開放原始碼的建構與測試工具,與 Make、Maven 和 Gradle 類似。 使用人類可讀的高階建構語言。Bazel 支援 並建構適用於多種平台的輸出內容。Bazel 支援 多個存放區以及大量使用者來進行大型程式碼集。

優點

Bazel 提供以下優點:

  • 高階建構語言。Bazel 使用人類可讀的抽象化機制 概略說明專案的建構屬性 語意層級與其他工具不同的是,Bazel 是根據「概念」運作 程式庫、二進位檔、指令碼和資料集等項目, 將個別呼叫寫入到編譯器等工具的複雜度 連結器。

  • Bazel 速度飛快又可靠。Bazel 會快取所有先前完成的工作 會追蹤檔案內容和建構指令的變更。這樣一來 才會知道何時需要重建內容 並且僅重新建構該物件進一步 加快建構速度,您就能設定專案,以 「平行」和「漸進式」

  • Bazel 是多平台Bazel 會在 Linux、macOS 和 Windows 上執行。Bazel 都能為多種平台建構二進位檔和可部署的套件, 電腦版、伺服器和行動裝置

  • Bazel 會持續調度資源。Bazel 在處理建構作業時 來源檔案。這個模型可與背景中的多個存放區和使用者群搭配使用 成千上萬個

  • Bazel 是可擴充的。有許多語言是 您可以擴充 Bazel 以支援任何其他語言或 這個架構的重點在於

使用 Bazel

如要使用 Bazel 建構或測試專案,通常需要執行以下作業:

  1. 設定 Bazel。下載並安裝 Bazel

  2. 設定專案工作區, Bazel 會在這裡尋找建構輸入內容和 BUILD 檔案,以及 會儲存建構輸出內容

  3. 編寫 BUILD 檔案,用於告知 Bazel 要建構什麼內容及如何 建構應用程式

    如要編寫 BUILD 檔案,您可以使用 Starlark 是網域專屬的語言。(參閱範例) 請按這裡)。

    建構目標可指定 Bazel 將建構的一組輸入構件 Bazel 會使用建構規則建構容器 設定建構規則

    建構規則指定 Bazel 要使用的建構工具,例如編譯器和 及其設定Bazel 會包含多項建構規則 涵蓋了不同語言中最常見的構件類型 以及支援的平台

  4. 透過指令列執行 Bazel。Bazel 會將輸出內容放置在工作區中

除了建構之外,您也可以使用 Bazel 執行 測試查詢建構內容 追蹤程式碼中的依附元件

Bazel 建構程序

執行建構或測試時,Bazel 會執行以下作業:

  1. 載入與目標相關的 BUILD 檔案。

  2. 分析輸入內容及其欄位 依附元件則套用指定版本 並產生「動作」 圖表。

  3. 對輸入執行建構動作,直到最終建構輸出內容為止 。

Bazel 會快取先前所有的建構工作,因此 Bazel 可以找出並重複使用快取過的快取 並且只針對已變更的內容重新建構或重新測試。為了進一步強制執行 時,您可以設定 Bazel 來執行建構作業和測試 完全透過沙箱機制,將偏移量降到最低 盡可能提高可重現性

動作圖表

動作圖表代表版本成果、建構成果之間的關係 以及 Bazel 將執行的建構動作透過這張圖表,Bazel track 變更到 檔案內容,以及對動作 (例如建構或測試指令) 的變更,且 瞭解先前的建構工作內容你也可以透過圖表 輕鬆追蹤程式碼中的依附元件

入門教學課程

如要開始使用 Bazel,請參閱開始使用或直接跳到 一起參閱 Bazel 教學課程: