目前,我在命令行中使用export JAVA_OPTS ...
,但似乎还有其他可能性,使用build.sbt
或外部属性文件。
答案 0 :(得分:2)
您设置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/default
,application.ini
或其他自定义名称的文件,该文件将由启动脚本读取添加设置。
此文件的每一行都被视为额外的启动参数,因此仍然强制执行前面提到的相同规则;例如需要将-X
标记写为-J-X
。
注入选项&永远不需要更改的代码
您可以使用SBT设置bashScriptExtraDefines
将更改直接硬编码到运行以启动二进制文件的shell脚本中,并按照http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#extra-defines
就可能的情况而言,这是最灵活的选项(您可以编写任何有效的bash代码,并将其添加到启动脚本中)。但它的灵活性也较低,因为之后不可修改;任何可选的计算都必须用bash脚本语言来描述。