特定于项目的SBT JVM选项

时间:2014-02-25 18:00:16

标签: sbt

对于一个项目,我需要使用特定的 JVM 选项(-Dfile.encoding=UTF-8和一些内存/ gc选项)启动 SBT - 但我不知道我一定希望将这些相同的选项应用到我拥有的每个SBT项目中。

我在.sbtopts(项目特定的 SBT 命令行选项)和{{1}中看到过引用(在 sbt-extras 中) }(特定于项目的 SBT JVM 选项)应该支持此文件的文件,如果在 SBT 项目的根目录中找到,但标准的 Windows SBT的版本(我使用的版本 0.13.1 )似乎忽略了它们。

sbt-extras 方法对我很有吸引力,因为假设在版本控制中跟踪.jvmopts.sbtopts,则 SBT 希望建立项目的人员需要配置。)

是否有当前机制来指定跨平台工作的特定于项目的 SBT 选项?

更新:由于我最初提出此问题,.jvmopts.sbtopts现已成为 SBT的标准 Linux 版本的一部分 sbt-extras 不再需要。但是, Windows 版仅支持.jvmopts,但无法识别.jvmopts

3 个答案:

答案 0 :(得分:0)

似乎sbt-launcher-package项目(sbt projects umbrella下方增加了一定的确定性)是可以遵循的方式。

答案 1 :(得分:0)

这是 Windows 上当前版本的 SBT (在编写本文时为v1.0.3)的公认限制(它无法识别{{1在项目的根目录中)。所有版本现在都支持.sbtopts文件。

您可以在sbt-launcher-package's _GitHub issue tracker上跟踪此问题的状态。

答案 2 :(得分:-1)

您可以从构建配置更改JVM选项。举个例子:

fork in run := true

javaOptions += "-Xmx1G"

fork 选项很重要,因为sbt需要在执行 run 任务时启动新的JVM,否则选项不会应用于当前运行之一。

此解释假定您使用的是sbt样式的构建;如果你使用的是基于Scala的构建(这就是我实际使用的构建),你应该把它写成:

lazy val yourProject = Project(id = "some-project-id", base = file("./"),
  settings = Project.defaultSettings ++ Seq(
    fork in run := true,
    javaOptions += "-Xmx1G"
    // ...
  ))