eclipse - 什么是最好的 Scala 构建系统?

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

7年前关闭。




Improve this question




我在这里看到了有关 IDE 的问题 -- Which is the best IDE for Scala development?和 What is the current state of tooling for Scala? ,但我对 IDE 的体验参差不齐。现在,我使用带有自动工作区刷新选项的 Eclipse IDE,并使用 KDE 4 的 Kate 作为我的文本编辑器。以下是我想解决的一些问题:

  • 使用我自己的编辑器 IDE 确实适合使用其组件的每个人。我更喜欢 Kate,但是刷新系统很烦人(它不使用 inotify,而是可能有 10 秒的轮询间隔)。我不使用内置文本编辑器的原因是因为损坏的自动完成功能导致 IDE 挂起可能 10 秒。
  • 仅重建修改过的文件 Eclipse 构建系统已损坏。它不知道什么时候重建类。我发现自己几乎有一半的时间都在进行项目->清理。更糟糕的是,即使它完成了我的项目的构建,几分钟后它也会弹出一些奇怪的错误(编辑 - 这些错误似乎是以前通过项目>清理解决的问题,但后来又回来了。 ...)。最后,将“首选项/如果项目包含错误则继续启动”设置为“提示”似乎对 Scala 项目没有影响(即,即使存在错误,它也始终启动)。
  • 构建定制我可以使用“每晚”版本,但我想修改和使用我自己的 Scala 版本,而不是内置在 IDE 插件中的编译器。通过 [e.g.] -Xprint:jvm 也很好到编译器(打印出降低的代码)。
  • 快速编译尽管 Eclipse 并不总是正确构建,但它确实看起来很活泼——甚至比 fsc 还要快。 .

  • 我查看了 Ant 和 Maven,但还没有使用过(我还需要花时间解决 #3 和 #4)。在我花时间让一个次优的构建系统工作之前,我想看看是否有人有其他建议。提前致谢!

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

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

    最佳答案

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

    因此,仅构建修改过的文件几乎是不可能的。除了 SDT,我所知道的唯一一个甚至尝试过这个的工具是 SBT ( Simple Build Tool )。它使用编译器插件在编译文件时跟踪文件并查询编译器本身计算的依赖关系图。在实践中,这比 recompile-the-world 方法产生了大约 50% 的改进。再一次,这是一个解决 2.8.0 之前的 scalac 缺陷的技巧。

    好消息是,即使不担心更改检测,仍然可以实现相当快的编译。 FSC 使用 Eclipse SDT 用于实现快速增量编译的相同技术(哦,听起来很“Charlie Eppes”)。简而言之,它非常活泼。

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

    如您所见,我非常坚信 Buildr 是目前最好的 Scala 构建工具。它的文档在 Scala 方面有点参差不齐,但这是因为一切都非常简单,以至于很难在不感到冗长的情况下进行记录。您可以随时查看 my GitHub repositories 之一举些例子。祝你好运!

    https://stackoverflow.com/questions/972006/

    相关文章:

    c# - 使用 CMake 生成 C# 项目

    java - Maven多模块项目的构建顺序?

    gcc - 在 CMake 中使用 -isystem 而不是 -I

    visual-studio-2012 - VS 2012 构建 Hello World : "The

    build - 如何将 Autotools 项目转换为 CMake 项目?

    ios - 使用没有代码设计的 xcodebuild 构建 iOS 应用程序

    xcode - 向 Xcode 添加了运行脚本阶段,但没有任何反应

    c++ - Visual Studio 2013 错误 MS8020 Build tools v14

    xcode - 用于使用最新 sdk 的 xcodebuild 参数。

    android - 错误 :Execution failed for task ':android: