4

我的目标是减少 Scala 编译时间。我正在使用带有 Scala 2.8.1-RC1 的 Intellij IDEA 10。

我读过使用 SBT 将减少编译时间,因为它很聪明地只重新构建自上次构建以来已更改的文件/类。

我知道 JRebel 有一个非常相似的目的。使用 JRebel 代替或补充 SBT 有什么意义吗?

4

2 回答 2

18

他们做不同的事情。SBT 有一个非常快速的持续增量构建系统。JRebel 在重建类时动态地将类重新加载到正在运行的程序中。这有点像 Java 调试器修改正在运行的程序的能力,但烦人的限制要少得多。SBT 和 JRebel 是互补的。

于 2010-12-23T20:25:58.333 回答
5

您也可以说 SBT 排除了 Hudson 或其他 CI 工具。或者它消除了当您输入无法编译的代码时 IDE 生成的红色波浪线。但是即使使用 SBT,这些工具仍然很有用,并且 SBT 提供了许多超越 CI 和热部署的强大功能。

它确实避免了 Maven。

对我来说,SBT 与 JRebel 有一点重叠——就像我使用 SBT 不断编译和重新部署 Web 应用程序到码头(~prepare-webapp)。这感觉很像使用 JRebel 不断地将更改推送到 Java 应用程序容器。

它通过快速代码更改检测和测试提供“穷人持续集成”:http: //devblog.point2.com/2009/07/27/scala-continuous-testing-with-sbt/

一般来说,SBT 是您应该用于 Scala 的 make/ant/maven 替代品。我一直对它简化开发的方式印象深刻,当我回到 Java/Maven(甚至使用 JRebel)时,我很怀念它。无论您发现哪些其他工具和框架有用,您都应该使用它。

希望有帮助:)

于 2010-12-23T22:37:46.087 回答