我目前正在使用SBT来构建我的scala项目,但是最近我了解了另一个名为CBT的构建工具。
从CBT文档中可以看出,编写构建文件与编写scala代码一样好。
我想知道这两种构建工具的优缺点,比如性能、构建时间等等。
发布于 2017-05-07 20:58:21
我是CBT的作者。
TL;CBT博士在某些领域更简单、更快,但更年轻、实践更少。
长篇版本:
CBT的目标是要比SBT简单得多,同时与Maven或Ant等旧工具相比,在表现力方面具有类似的好处。我相信CBT提供这里。在引用任务(方法)时,它还为您提供了类型安全性,在SBT中,任务可能在读取任务的作用域中定义,也可能不定义。从性能上讲,CBT从bash开始的启动时间(约100‘s)要快得多,并且通过操作系统推送通知(而不是SBT的0.5s间隔轮询)即时响应文件更改。
CBT在这一点上比SBT更少得到实践证明,你可能会发现一些粗糙的边缘。特别是,现在我打算很快修改的文档非常少。您还会发现CBT在线构建的示例要少得多。然而,CBT的repo和测试中有示例文件夹。你可能还会发现一些盲点wrt插件。所有的指针,代码格式化器,编译器,发布插件都存在。打包和IDE支持仍然需要重大改进。插件非常容易编写和添加。
CBT的源代码在概念上非常简单,是初学者友好的代码,很容易做出贡献,部分原因是CBT在更改后自动重建自己,使其立即可用。SBT的代码库更难掌握,我不知道如何实际使用本地更改的代码库,我想部署快照构建。
CBT目前不同时运行任务或构建项目。对于项目中的任务,它可能永远不会这样做,但可能会开始对不同的子项目进行并发编译。SBT尽可能(或假设可能)并行任务。我不认为CBT的表现会因为不这样做而受到影响。总体上来说挺快的。
CBT还没有在大型项目上进行过测试。CBT本身是一个包含>10个子项目的多项目构建,但这可能是迄今为止尝试过的最大的项目。
所以现在(在几个星期甚至几个月内,这种情况正在迅速改善)--如果你选择CBT --准备阅读它的大量源代码,使用gitter通道和我们交谈,而不是使用IDE或者自己配置它,帮助修复更小的、表面的可用性错误--还没有人费心去修复。
如果你想要完善的,更好的支持,更多的文档,更复杂的工具,更多的拷贝和可传递的例子和更多的插件在线,去与SBT。如果您想要一个更简单、更容易使用、更快、几乎没有文档化的代码库的工具,您可以快速理解,但有时您可能需要修复自己,现在使用CBT。
最近还有一段关于CBT:https://youtu.be/-2aMaAPQ35s的视频。
https://stackoverflow.com/questions/43828893
复制相似问题