Scala 构建工具 SBT 与 CBT

Scala build tools SBT vs CBT

我目前正在使用 SBT 构建我的 scala 项目,但是最近我了解到另一个名为 CBT 的构建工具。

我从 CBT 文档中看到的一个明显优势是,编写构建文件与编写 scala 代码一样好。

我想从使用过它的人那里了解这两种构建工具的比较优缺点,例如性能、构建时间等。

我是 CBT 的作者。

TL;DR CBT 在某些领域更简单、更快,但更年轻且实践证明较少。

长版:

CBT 旨在比 SBT 更易于使用,同时与 Maven 或 Ant 等旧工具相比在表现力方面具有相似的优势。我相信 CBT 在这里提供。它还在引用任务(方法)时为您提供类型安全,在 SBT 中,任务可能会或可能不会在您正在阅读的范围内定义。性能明智的 CBT 从 bash 开始具有更快的启动时间(约 100 毫秒),并通过 OS 推送通知而不是 SBT 的 0.5 秒间隔轮询立即对文件更改做出反应。

在这一点上,CBT 的实践证明不如 SBT,您可能会发现一些粗糙的边缘。特别是现在我打算尽快更改的文档很少。您还会在网上找到更少的 CBT 构建示例。然而,CBT 的回购中有示例文件夹和测试。您可能还会发现一些关于插件的盲点。所有的 linters、代码格式化程序、编译器、发布插件都存在。打包和 IDE 支持仍然需要重大改进。插件非常容易编写和添加。

CBT 的源代码在概念上非常简单,初学者友好的代码很容易贡献,部分原因是 CBT 在更改后自动重建自身,使其立即可用。 SBT 的代码库更难掌握,我不知道如何实际使用本地更改的代码库,我想部署快照构建。

CBT 目前不 运行 任务或同时构建项目。它可能永远不会为项目中的任务执行此操作,但可能会为不同的子项目开始并发编译。 SBT 尽可能(或假设可能)并行化任务。我不认为 CBT 的表现会因不这样做而受到影响。总体来说还是挺活泼的。

CBT 尚未在大型项目上进行实战测试。 CBT 本身是一个包含超过 10 个子项目的多项目构建,但这可能是迄今为止尝试过的最大的一个。

所以现在(这在数周和数月内迅速改善)如果您选择 CBT,请准备好阅读大量它的源代码,使用 gitter 频道与我们交谈,而不是使用 IDE 或自己配置,帮助修复较小的、肤浅的可用性错误,但还没有人费心修复。

如果您想要更精美、支持更好、文档更多、更复杂的工具以及更多可复制和粘贴的示例以及更多在线插件,请选择 SBT。如果您想要更简单、更易于使用、更快捷、几乎没有文档记录的工具以及您可以快速理解的代码库,但您现在可能有时需要自我修复,请使用 CBT。

最近还有这个关于 CBT 的视频:https://youtu.be/-2aMaAPQ35s