SBT является приложением JVM, поэтому, когда вы запускаете оболочку SBT с помощью команды sbt
, в конечном итоге это приводит к запуску экземпляра JVM.
JAVA_OPTS - это переменная окружения, которая понимается скриптом sbt
; эти параметры передаются экземпляру JVM, в котором работает оболочка SBT и в котором выполняются все задачи. Другой способ добиться этого - передать параметр -mem
:
sbt -mem 2g
Существуют также варианты хранения этих аргументов в определенных файлах. Например, вы можете создать файл с именем .sbtopts
в корне вашего проекта со следующим содержимым:
-mem 2g
И затем каждый раз, когда SBT запускается в этом каталоге, аргумент -mem
будет автоматически выбираться. Это удобный способ убедиться, что все люди, работающие над проектом, используют одинаковые параметры SBT (если вы, конечно, добавляете этот файл в хранилище),
Параметр javaOptions
является параметром сборки SBT, и он совершенно не связан с параметрами, которые установлены для экземпляра JVM, в котором работает SBT. Параметр javaOptions
используется для настройки задач, запускающих новые экземпляры JVM, например, вы можете настроить SBT для запуска нового экземпляра JVM при запуске метода main с помощью задачи runMain
, а затем этот параметр можно использовать следующим образом:
runMain / javaOptions := "..." // same as `javaOptions in runMain` but using more modern (and recommended) syntax
Задача assembly
, однако, не запускает никаких новых экземпляров JVM для выполнения своей работы, она полностью выполняется внутри экземпляра JVM SBT. Поэтому установка javaOptions
для assembly
ничего не изменит, поскольку эта задача даже не читает этот параметр.