【问题标题】:How to compile just some files with sbt?如何用 sbt 编译一些文件?
【发布时间】:2017-10-20 21:01:56
【问题描述】:

我与 sbt(Scala 构建工具)配合得很好。如果你的代码只有小问题,那很容易。

现在,在添加了一个主要功能之后,我的大部分代码都被破坏了,我似乎对依赖关系的方式感到困惑。我可以帮助它,先编译基本模块,但它似乎没有让我这样做。

它的帮助系统……臭名昭著。

> help compile
Compiles sources.

是的,好吧。我猜到了。

我想听到的是:我如何只编译 - 比如说 - src/module/A.scala

这甚至是不可能的(你好,make,永远不要放弃你!)。至少我在 Internet 上找不到任何将sbt compile 应用于单个文件的参考。

我在命令行提示符下使用 sbt,而不是 IDE。

更新:

这是我的错。 :/ 将一个源文件拆分为多个,但忘记将package 子句复制到每个新文件中。哎呀。

将保持此打开状态一段时间,因为只编译一个文件(即像 sbt compile filename 这样的文件)不会是一件坏事。

【问题讨论】:

  • 能否添加sbt的相关输出?出了什么问题?你试过先执行clean吗?
  • 有大约 5 页的 sbt 输出,我不习惯把它放在这里。通常,sbt 似乎从最不依赖的部分开始,但现在错误是相互交叉引用的,所以很难说,从哪里开始解开整体。可能是我的错,但该工具现在确实妨碍了理解。即 StationBase:没有找到 StateBase; StateBase:没有找到 StationBase(因为目前都没有编译)。
  • 您可以将输出粘贴到pastie.org 并在此处链接。
  • 更有趣的是,sbt --help 甚至不会将compile 列为命令,至少在我的 sbt 1.4.7 上是这样。必须做一些互联网搜索才能找到答案,因为指南提到的唯一内容是sbt run。所以你的问题已经提供了一个有用的答案。

标签: scala sbt


【解决方案1】:

你可以定义一个Multi-Project Build,你想单独编译的文件被封装在一个项目中。根据文档,以下是可能的:

在 sbt 交互式提示符下,键入 projects 以列出您的项目和 project 以选择当前项目。当您运行诸如编译之类的任务时,它会在当前项目上运行。所以你不一定要编译根项目,你可以只编译一个子项目。

【讨论】:

  • 为诚实的答案提供 +1。 Pheeww .. SBT 应该是为了.. 简单吗? :D
【解决方案2】:

我只想在这里提一下,我遇到了 sbt-compile-quick-plugin (https://github.com/etsy/sbt-compile-quick-plugin)。它会按照它在锡上说的做,只需将addSbtPlugin("com.etsy" % "sbt-compile-quick-plugin" % "1.3.0") 添加到您的project/plugins.sbt,然后您就可以启动sbt 并运行compileQuick /path/to/your/file

(见https://stackoverflow.com/a/46849619/1358677

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 2019-06-07
    • 2013-05-30
    • 1970-01-01
    • 2011-09-15
    • 2013-02-16
    • 2014-11-17
    • 2020-01-13
    相关资源
    最近更新 更多