Sbt 程序集 JVM 设置
Sbt assembly JVM settings
我只是想了解在使用 sbt-assembly 插件在 scala 项目中生成 jar 时接下来两种设置 JVM 参数的方式之间的区别:
// This works fine - no memory issues while building jar
set "JAVA_OPTS=-Xms2g -Xmx2g"
// in build.sbt
// Getting memory issues while building jar
javaOptions in assembly += "-Xms2g -Xmx2g"
谢谢,
SBT 是 JVM 应用程序,因此,当您使用 sbt
命令启动 SBT shell 时,最终会启动 JVM 实例。
JAVA_OPTS 这里是一个环境变量,sbt
脚本可以理解;这些选项被传递给 SBT shell 正在 运行ning 的 JVM 实例,所有任务都在其中执行。实现此目的的另一种方法是传递 -mem
选项:
sbt -mem 2g
还有将这些参数存储在特定文件中的选项。例如,您可以在项目的根目录中创建一个名为 .sbtopts
的文件,内容如下:
-mem 2g
然后每次在此目录中启动 SBT 时,-mem
参数将自动被拾取。这是确保所有从事项目工作的人都使用相同 SBT 选项的便捷方式(当然,如果您将此文件提交到存储库),
javaOptions
设置是一个SBT构建设置,它与SBT为运行ning的JVM实例设置的选项完全无关。 javaOptions
设置用于配置启动新 JVM 实例的任务,例如您可以将 SBT 配置为在您通过 runMain
任务 运行 一个主要方法时启动一个新的 JVM 实例,然后可以像这样使用此设置:
runMain / javaOptions := "..." // same as `javaOptions in runMain` but using more modern (and recommended) syntax
但是,assembly
任务不会启动任何新的 JVM 实例来完成它的工作,它 运行 完全在 SBT JVM 实例中。因此,为 assembly
设置 javaOptions
将不会执行任何操作,因为此任务甚至不读取此设置。
我只是想了解在使用 sbt-assembly 插件在 scala 项目中生成 jar 时接下来两种设置 JVM 参数的方式之间的区别:
// This works fine - no memory issues while building jar
set "JAVA_OPTS=-Xms2g -Xmx2g"
// in build.sbt
// Getting memory issues while building jar
javaOptions in assembly += "-Xms2g -Xmx2g"
谢谢,
SBT 是 JVM 应用程序,因此,当您使用 sbt
命令启动 SBT shell 时,最终会启动 JVM 实例。
JAVA_OPTS 这里是一个环境变量,sbt
脚本可以理解;这些选项被传递给 SBT shell 正在 运行ning 的 JVM 实例,所有任务都在其中执行。实现此目的的另一种方法是传递 -mem
选项:
sbt -mem 2g
还有将这些参数存储在特定文件中的选项。例如,您可以在项目的根目录中创建一个名为 .sbtopts
的文件,内容如下:
-mem 2g
然后每次在此目录中启动 SBT 时,-mem
参数将自动被拾取。这是确保所有从事项目工作的人都使用相同 SBT 选项的便捷方式(当然,如果您将此文件提交到存储库),
javaOptions
设置是一个SBT构建设置,它与SBT为运行ning的JVM实例设置的选项完全无关。 javaOptions
设置用于配置启动新 JVM 实例的任务,例如您可以将 SBT 配置为在您通过 runMain
任务 运行 一个主要方法时启动一个新的 JVM 实例,然后可以像这样使用此设置:
runMain / javaOptions := "..." // same as `javaOptions in runMain` but using more modern (and recommended) syntax
但是,assembly
任务不会启动任何新的 JVM 实例来完成它的工作,它 运行 完全在 SBT JVM 实例中。因此,为 assembly
设置 javaOptions
将不会执行任何操作,因为此任务甚至不读取此设置。