Pants:类似Maven但支持多个语言的构建


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。高级插件系统允许插件使用所有这些相同的功能。