用戶端/伺服器實作

回報問題 查看原始碼 。 。 。 。 夜間。 。 7.3 。 。 7.2 。 。 7.1 。 。 7.06.5

Bazel 系統是以長期伺服器處理程序的形式實作。這樣一來 執行批次導向實作無法提供的最佳化工作 例如快取 BUILD 檔案、依附元件圖表,以及 下個單元將深入這能改善漸進式建構的速度,並讓 例如 buildquery 等不同指令,藉此共用 載入套件,加快查詢速度。

執行 bazel 時,就是在執行用戶端。用戶端找到伺服器 而預設是依據基礎路徑 工作區目錄和使用者 ID,因此如果您在多個工作區中建立建構項目 您也有多個輸出基準,因此能有多個 Bazel 伺服器處理程序。 同一個工作站中的多位使用者可在同一工作站中同時進行建構 工作區,因為兩者的輸出基礎不同 (使用者 ID 不同)。如果 用戶端找不到執行中的伺服器執行個體,只會啟動新的執行個體。伺服器 在閒置一段時間後 (預設為 3 小時, 透過啟動選項 --max_idle_secs 修改)。

在大部分的情況下,雖然伺服器無法識別運作中的伺服器 但在某些情況下,請牢記這一點舉例來說 執行指令碼,在不同目錄中執行大量自動化建構作業。 請務必確保不會累積太多閒置伺服器你 可以在完成後明確關閉 您可以指定較短的逾時期限

Bazel 伺服器程序的名稱會顯示在 ps xps -e f 的輸出內容中 如同 bazel(dirname),其中 dirname 是 。例如:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

這樣您可以更容易發現哪個伺服器程序屬於給定的 工作區(請注意,與其他 ps、Bazel 伺服器有關的其他選項也應有限制) 程序只能命名為 java)。您可以使用 關閉指令。

執行 bazel 時,用戶端會先檢查伺服器是否適當 版本;否則伺服器就會停止運作,新伺服器也會啟動。這可以確保 長時間執行伺服器處理程序不會幹擾適當的 以及版本管理