为使用sbt-native-packager创建的可执行文件设置JVM选项的推荐方法是什么?



目前,我在命令行上使用export JAVA_OPTS ...,但似乎还有其他可能性,使用build.sbt或外部属性文件。

我在这里,这里和这里发现了几个相关的github问题,但许多选项令人困惑。有什么推荐的方法吗?

设置JVM选项的方法主要取决于您的用例:

每次注入选项

如果您希望能够在每次运行服务时指定选项,则有两种机制是环境变量和命令行参数。您使用的主要是品味或方便的问题(但命令行参数将覆盖环境变量设置)。

  • 环境变量

    可以使用JAVA_OPTS环境变量注入值。这被指定为直接传递给java二进制文件的参数序列,每个参数用空格分隔。

  • 命令行参数

    您可以通过以以下两种格式添加命令行参数来注入值:

    • -Dkey=val

    • 将Java环境属性传递到Java二进制文件中。
    • -J-X

      传递任何标志-X到java二进制文件,去掉前面的-J

从文件中注入可修改的选项

如果您希望在文件系统上有一个可以在安装后修改的文件,那么您将希望使用sbt-native-packager.ini文件中读取的能力来初始化Java选项的默认值。详细信息可在http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#file-application-ini-or-etc-default

查看。

按照说明,并根据您正在使用的原型,您将得到一个位于/etc/defaultapplication.ini或另一个自定义名称的文件,启动脚本将读取该文件以添加设置。

该文件的每一行都被视为额外的启动参数,因此仍然执行前面提到的相同规则;例如,-X标志需要像-J-X一样被写入。

注入选项&不需要修改的代码

您可以通过使用SBT设置bashScriptExtraDefines,并按照http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#extra-defines

上的详细信息,将更改直接硬编码到用于启动二进制文件的shell脚本中。

就可能的情况而言,这是最灵活的选项(您可以编写任何有效的bash代码,这将添加到启动脚本中)。但它也不那么灵活,因为它之后是不可修改的;任何可选的计算都必须用bash脚本语言来描述。

最新更新