我的目标是减少Scala编译时间。我正在使用Intellij IDEA 10和Scala 2.8.1-RC1。
我已经读过使用SBT会减少编译时间,因为它只重新构建自上次构建以来已更改的文件/类。
据我所知,JRebel的目的非常相似。除了SBT之外,使用JRebel还有什么意义吗?
答案 0 :(得分:18)
他们做不同的事情。 SBT有一个非常快速的连续增量构建系统。 JRebel在重建时动态地将类重新加载到正在运行的程序中。它类似于Java调试器修改正在运行的程序的能力,但具有更少的烦人限制。 SBT和JRebel是互补的。
答案 1 :(得分:5)
您可能还说SBT避免使用Hudson或其他CI工具。或者,当您输入无法编译的代码时,它会消除IDE生成的红色波浪线。但即使使用SBT,这些工具仍然有用,而SBT提供了CI和热部署之外的许多强大功能。
它确实避免了Maven。
SBT与JRebel重叠了一下 - 比如当我使用SBT连续编译并将Web应用程序重新部署到jetty(~prepare-webapp)时。这与使用JRebel不断将更改推送到Java应用程序容器非常相似。
它通过快速代码更改检测和测试提供“差人持续集成”:http://devblog.point2.com/2009/07/27/scala-continuous-testing-with-sbt/
通常,SBT是您应该用于Scala的make / ant / maven替代品。我对它如何简化开发一直印象深刻,当我回到Java / Maven(甚至使用JRebel)时我会想念它。无论您认为哪些其他工具和框架有用,都应该使用它。
希望有所帮助:)