Scala构建工具SBT与CBT相比有何优劣之处?

9

我目前使用SBT构建我的Scala项目,但最近我了解到另一种构建工具叫做CBT

从CBT文档中可以看出一个明显的优势,那就是编写构建文件与编写Scala代码一样好。

我想知道有人使用过这两种构建工具后的比较优缺点,例如性能、构建时间等。

1个回答

16

我是CBT的作者。

简而言之,CBT在某些领域更为简单快速,但它年轻且缺乏实践证明。

详细说明:

CBT旨在比SBT使用起来显著简单,同时与旧工具如Maven或Ant相比,在表达能力上提供类似的好处。我相信CBT在这方面做到了。当涉及到任务(方法)时,它还可以为您提供类型安全性,在SBT中,任务可能已经定义也可能未定义在读取任务所在范围内。在性能方面,CBT从bash启动时间要快得多(约100ms),并通过操作系统推送通知立即响应文件更改,而不是SBT的0.5s间隔轮询。

目前,CBT的实践经验不如SBT丰富,您可能会发现一些问题。特别是现在几乎没有文档,我希望很快能够改变这种情况。您还会发现在线构建CBT的示例要少得多。但在CBT的存储库中有“examples”文件夹和测试。对于插件,您可能还会发现一些盲点。所有的语法检查器、代码格式化器、编译器和发布插件都存在。打包和IDE支持仍然需要重大改进。插件的编写和添加非常容易。

CBT的源代码在概念上非常简单,适合初学者的代码,易于贡献,部分原因是CBT在更改后会自动重新构建,使其立即可用。SBT的代码库要难得多,我不知道如何使用本地更改过的代码库,我想只能进行快照构建部署。

目前,CBT不会并发运行任务或构建项目。它可能永远不会针对项目内的任务这样做,但很可能会开始并发编译不同的子项目。SBT尽可能并行处理任务(或被认为是可能的)。我认为CBT的性能没有受到不执行并发处理的影响。总体而言,它相当灵活。

CBT还没有在较大项目上进行过战斗测试。CBT本身是一个包含> 10个子项目的多项目构建,但那可能是到目前为止尝试过的最大的一个。

当前(并且在未来几周和几个月内这种情况正在迅速改善),如果您选择CBT,请准备阅读它的源代码,使用gitter频道与我们交流,不使用IDE或自己配置,帮助修复一些较小、表面上的可用性问题,这些问题还没有被解决。
如果您想要更加完善、支持更好、文档更详细、更为复杂的工具,并拥有更多可复制粘贴的示例和在线插件,则应该选择SBT。如果您想要更简单、更易于使用、更快捷、几乎没有文档的工具,并且可以很快理解其代码库,但现在可能需要自己修复一些bug,则应该选择CBT。
此外,还有一个关于CBT的最新视频:https://youtu.be/-2aMaAPQ35s

我认为你的回答给了我一个清晰的画面。谢谢。 - Yogesh Patil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接