我正在潜入 Scala 并注意到 sbt。我对 Java/groovy 项目中的 Gradle 非常满意,而且我知道 Gradle 有一个 scala 插件。
在 Scala 项目中偏爱 sbt 而不是 Gradle 的充分理由是什么?
请注意,SBT 和 Gradle 之间的一个关键区别是它的依赖管理:
缓存确实会混淆,但 Ivy 不理解解析快照的说法是不正确的。Eugene 在另一个线程中解释了这一点,也许在管理员列表中。0.12 中解决了 sbt 的自动更新问题。
据我所知,Ivy 不支持的是以 Maven 的方式发布快照。我相信我已经在别处说明了这一点,但如果有人想改善这种情况,我认为最好与 Gradle 团队合作,重用他们的依赖管理代码。
只是让您知道,Ivy 和 Maven 快照依赖项的问题是 Gradle 最终用自己的依赖项管理代码替换 Ivy 的原因之一。这是一项艰巨的任务,但给我们带来了很多好处。
这条推文提到未来所有情况都可能发生变化:
Mark 过去曾说过,他对使用 Gradle 代替 Ivy 进行 SBT 很感兴趣。
(两种工具可以互相学习)
对我来说,SBT 的主要特点是:
fsc
)。~test
都会重新编译并测试您的项目。缺点是:
sbt 是一个 Scala DSL,对它来说 Scala 是一等公民,所以原则上它似乎很合适。
但是 sbt 存在版本之间的主要不兼容更改,这使得很难为任务找到正确的工作插件并使其工作。
我个人放弃了 sbt,因为它造成的问题多于解决的问题。我实际上切换到gradle。
去搞清楚。
我对 gradle 还很陌生,对 sbt 也很陌生——到目前为止,我真正喜欢 sbt 的是交互式控制台。它允许我使用“检查”之类的命令来更好地了解正在发生的事情。AFAIK gradle 不提供这样的自动取款机。
Sbt 和 gradle,两者都是基于静态类型语言....但是 sbt 几乎没有优势: