我正潜入Scala并注意到了sbt。我对Java / groovy项目中的Gradle非常满意,我知道Gradle有一个scala插件。
在Scala项目中,有什么理由支持sbt而不是Gradle?
答案 0 :(得分:59)
请注意,SBT和Gradle之间的一个关键区别是依赖关系管理:
确实缓存可能会混淆,但是Ivy不理解解析快照是不正确的。 Eugene在另一个帖子中解释了这一点,也许在管理员列表中。 sbt的自动更新存在问题,已在0.12中解决。
据我所知,Ivy不支持以Maven的方式发布快照。我相信我已在其他地方说过这一点,但如果有人想要改善这种情况,我的意见是努力与Gradle团队一起努力重用他们的依赖管理代码。
只是为了让您知道,Ivy和Maven快照依赖项的问题是Gradle最终用自己的依赖管理代码取代Ivy的原因之一。这是一项艰巨的任务,但给我们带来了很多好处。
This tweet提到所有情况都可能在未来发展:
Mark过去曾表示,他有兴趣使用Gradle代替Ivy进行SBT。
(两个工具都可以learn from each other)
答案 1 :(得分:52)
对我来说,SBT的主要特点是:
fsc
)。~test
将重新编译并测试项目。缺点是:
答案 2 :(得分:40)
sbt是一个Scala DSL,因为Scala是一流的公民,所以原则上它看起来很合适。
但是sbt遭受了版本之间的主要不兼容的更改,这使得很难为任务找到正确的工作插件并使其工作。
我个人放弃了sbt,因为它造成的问题多于解决的问题。我实际上切换到了gradle。
去图。
答案 3 :(得分:4)
我很擅长学习,而且对于sbt来说还是新手 - 到目前为止我真正喜欢的是交互式控制台。它允许我使用'inspect'之类的命令来更好地了解正在发生的事情。 AFAIK gradle不提供这样的atm。
答案 4 :(得分:-11)
Sbt和gradle,都是基于静态类型的语言....但是sbt没什么优势: