Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 什么';什么是最好的Scala构建系统?_Eclipse_Scala_Build - Fatal编程技术网

Eclipse 什么';什么是最好的Scala构建系统?

Eclipse 什么';什么是最好的Scala构建系统?,eclipse,scala,build,Eclipse,Scala,Build,我在这里看到过关于IDE的问题,但我对IDE的体验不一。现在,我正在使用带有自动工作区刷新选项的EclipseIDE,并使用KDE4的Kate作为我的文本编辑器。以下是我想解决的一些问题: 使用我自己的编辑器IDE真正面向每个使用其组件的人。我更喜欢Kate,但刷新系统非常烦人(它不使用inotify,可能是10秒的轮询间隔)。我不使用内置文本编辑器的原因是,自动完成功能中断会导致IDE挂起10秒 仅重建修改过的文件Eclipse构建系统已损坏。它不知道何时重建类。我发现自己几乎有一半的时间去做

我在这里看到过关于IDE的问题,但我对IDE的体验不一。现在,我正在使用带有自动工作区刷新选项的EclipseIDE,并使用KDE4的Kate作为我的文本编辑器。以下是我想解决的一些问题:

  • 使用我自己的编辑器IDE真正面向每个使用其组件的人。我更喜欢Kate,但刷新系统非常烦人(它不使用inotify,可能是10秒的轮询间隔)。我不使用内置文本编辑器的原因是,自动完成功能中断会导致IDE挂起10秒
  • 仅重建修改过的文件Eclipse构建系统已损坏。它不知道何时重建类。我发现自己几乎有一半的时间去做项目->清洁。更糟糕的是,似乎即使在它完成构建我的项目之后,几分钟后它也会弹出一些奇怪的错误(编辑-这些错误似乎是以前通过“项目>清理”解决的问题,但随后又返回…)。最后,将“Preferences/Continue launch if project contains errors”设置为“prompt”似乎对Scala项目没有任何影响(即,即使有错误,它也总是启动)
  • 构建定制我可以使用“夜间”版本,但我想修改并使用我自己的Scala构建,而不是内置在IDE插件中的编译器。还可以将[e.g.]
    -Xprint:jvm
    传递给编译器(以打印出较低的代码)
  • 快速编译尽管Eclipse并不总是正确构建,但它确实看起来很快——甚至比
    fsc
    更为快速
  • 我研究了Ant和Maven,虽然他们都还没有被雇佣(我还需要花时间解决第3和第4题)。在我花时间让一个次优的构建系统工作之前,我想看看是否有人有其他建议。提前谢谢

    更新-我现在使用Maven,将一个项目作为编译器插件传递给它。它似乎足够快;我不确定Maven是做什么样的jar缓存的。Scala 2.8.0的当前存储库可用[]。原型非常酷,跨平台支持似乎非常好。然而,关于编译问题,我不确定fsc是否真的修复了,或者我的项目是否足够稳定(例如,类名没有改变)——手动运行它并不会让我太烦恼。如果您想查看示例,请随意浏览我正在使用的pom.xml文件[]


    更新2-从我所看到的基准测试来看,Daniel Spiewak认为buildr比Maven快是正确的(而且,如果要进行增量更改,Maven的10秒延迟会很烦人),所以如果一个人能够制作一个兼容的构建文件,那么它可能是值得的…

    你看过Intellij IDEA及其应用程序吗?Intellij在Java开发人员中拥有忠实的(狂热的?)追随者,因此您可能会发现这非常适合您的需要。

    使用当前的scalac很难管理第2点和第4点。问题是Scala的编译器在构建文件方面有点笨。基本上,它将构建您提供给它的任何内容,而不管是否真的需要构建该文件。Scala 2.8.0在这方面将有一些巨大的改进,但在此之前。。。EclipseSDT实际上有一些非常复杂(而且非常粗糙)的代码来进行更改检测和依赖项跟踪。总的来说,这是一个不错的工作,但正如你所看到的,有皱纹。EclipseSDT2.8.0将依赖于上述对scalac本身的改进

    因此,仅构建修改过的文件几乎是不可能的。除了SDT之外,我所知道的唯一一个甚至可以尝试使用它的工具是SBT()。它使用一个编译器插件来跟踪编译的文件,并查询由编译器自己计算的依赖关系图。在实践中,这比重新编译world方法提高了约50%。再一次,这是一种绕过2.8.0Scalac之前版本缺陷的方法

    好消息是,即使不担心更改检测,也可以实现相当快的编译。FSC使用EclipseSDT用于实现快速增量编译的相同技术(哦,听起来像是“CharlieEPPES”)。简言之,它相当快

    就我个人而言,我使用。它的配置明显比Maven或SBT更干净,启动时间也少几个数量级(在MRI下运行时)。它与FSC集成,并尝试自己进行一些基本的更改检测(相当原始)。它还对主要的Scala测试框架(ScalaTest、ScalaCheck和Specs)提供自动魔法支持,并支持与Java源代码的联合编译以及IntelliJ和Eclipse的IDE元生成。哦,它支持Maven的所有特性(依赖解析等),然后是一些。我甚至正在开发一个扩展,它允许交互式shell支持与JavaRebel集成,并支持多个shell提供者(Scala、JIRB、Clojure REPL等)。SVN还没有准备好,但我会在准备好后提交(可能会在1.3.5中及时提交)


    正如您所看到的,我非常坚定地认为Buildr是最好的Scala构建工具。就Scala而言,它的文档有点参差不齐,但这是因为所有内容都非常简单,很难记录下来而不感到冗长。您可以随时查看其中一个示例。祝你好运

    我对Eclipse上的scala插件也很失望,我可以在列表中添加一些问题:

    • 自动完成仅在部分时间有效
    • 调试器无法正常工作(特别是在尝试调试scala xml时)
    • 调试器会忘记断点
    • “转到定义”通常不起作用
    我很高兴听到Buildr听起来是一个更好的选择(在构建方面)