Pants:類似Maven但支援多個語言的構建

banq發表於2022-02-20

Pants 是一種快速、遠端友好且符合人體工程學的構建工具,適用於 Python、Go、Java 和 Scala 等多種語言。

Pants 構建系統是一個多語言工具,具有許多不錯的功能,包括完全並行性和遠端工作者支援。Pants 已經存在好幾年了,但自從 2.0 版以來,它執行在一個完全重建的 Rust 引擎上,該引擎適合高效能。 

在撰寫本文時,Pants 的版本為 2.9,現在包括對 Java 和 Scala 的 alpha 支援以及對 Python 和 Go 的支援。

 

Maven 或 Bazel 等傳統構建工具要求您維護一組依賴項,並在外部檔案中列出。Pants 建議通過分析您的原始檔並推斷它們來改變這一點。 

在 Python 的情況下,您將類似地建立一箇中央檔案來對映 repo 使用的依賴項的“宇宙”,但 Pants 對實際使用的依賴項具有智慧。Pants 準確瞭解專案中每個檔案所需的依賴項,並有效地使用任務所需的依賴項子集。

 

特點

有一些有趣的功能使 Pants 成為一個值得考慮作為傳統選擇的替代品的構建系統。這裡有一個描述。

  • 自動依賴推理。深吸一口氣,鬆了一口氣:Pants 可以分析您的匯入語句,並在沒有大量後設資料的情況下找出要下載的內容。
  • 細粒度的失效。Pants 儘可能在最小的單元上工作,因此失敗會使最小的新工作無效。
  • 智慧結果快取。Pants 旨在根據輸入精確地快取結果,因此隨著時間的推移相同的執行將不需要重做相同的工作。
  • 併發執行。Pants 是用 Rust 編寫的,其架構可以充分利用多核機器,從而在您的構建中實現並行性。
  • 遠端工作者。可以在遠端構建機器上設定Pants 。結合快取和併發,Pants 允許團隊重用彼此的構建結果並利用高效能執行。
  • 多語種。通過統一的介面支援多種語言和平臺。
  • 外掛 API。高階外掛系統允許外掛使用所有這些相同的功能。

 

相關文章