配置 SBT 全局设置

Configuring SBT global settings

我需要永久打开 SBT 的 -verbose 设置,而不必每次都输入它。最好的方法是什么?将 -verbose 放在 $SBT_OPTS 中没有任何效果。

如果您使用 unix 友好的环境,您可以在 ~/.bash/profile 中为 sbt 创建一个别名,例如

alias sbt=sbt -verbose

-verbose 标志可以通过将其保存在 配置文件中在系统范围内启用。例如,在我的机器上,它位于

/usr/local/etc/sbtopts

这是其内容的示例

# set memory options
-mem   2048

# java version (default: java from PATH, currently $(java -version |& grep version))
-java-home /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

-verbose

解决有关 IntelliJ 的评论,请注意 IntelliJ Scala 插件当前不读取全局 sbtopts,但它确实支持本地 .sbtopts 配置文件,但它 not support every option provided by sbt launcher script正确的:

Supported options:
    -no-share, -no-global, -sbt-boot, -sbt-dir, -ivy, -jvm-debug,
    all options with -D and -J prefixes

Unsupported options:
    -S prefix seems to be unsupported by sbt-launcher itself
    -mem has a bit untrivial algorithm, same thing can be achieved
        by configuring -Xmx, -Xms, -XX:ReservedCodeCacheSize options
    -sbt-version, -sbt-rc, -sbt-snapshot, -sbt-jar
        and -java-home are overriden by IDEA options

Other options have no impact on project importing process

SbtOpts.scala 应该列出所有支持的选项。一个值得注意的缺失是对 -mem 的支持,这意味着如果我们将 -mem 4096 放入 .sbtopts,那么 IntelliJ 将简单地忽略它。同样,标志 -verbose 不会被 IntelliJ sbt runner 拾取。

因此,关键是要了解 sbt runner 脚本本身与 IntelliJ 定制的 sbt runner 组件不同。