对于一个项目,我需要使用特定的 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
。
答案 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"
// ...
))