将 JVM Opts 从 build.sbt 传递到 Play Framework 2.2.x 中的启动脚本

Posted

技术标签:

【中文标题】将 JVM Opts 从 build.sbt 传递到 Play Framework 2.2.x 中的启动脚本【英文标题】:Pass JVM Opts from build.sbt to startup script in Play Framework 2.2.x 【发布时间】:2015-03-12 12:18:48 【问题描述】:

是否有可能将 JVM 选项(即 javaagent)从 build.sbt 配置/传递到阶段构建 - 以供生成的启动脚本使用。

【问题讨论】:

【参考方案1】:

如果您指的是 sbt-native-packager 生成的启动脚本,当使用 JavaAppPackaging 或 JavaServerPackaging 原型时,您可以使用 SBT 设置 bashScriptExtraDefines 修改它

见http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html?highlight=bashscriptextradefines#overriding-templates

您可以使用许多已在 bash 启动脚本中定义的函数和变量。 addJava 将标志添加到 java 二进制文件。 addApp 将标志添加到传递给正在运行的 Java 应用程序的参数中。 app_home 指向包含启动脚本的目录。

一个示例(假设您已通过mappings 设置将newrelic.jar 文件提供给暂存环境):

bashScriptExtraDefines += """addJava "-javaagent:$app_home/../newrelic/newrelic.jar""""

或者

bashScriptExtraDefines += "addApp -Dhttps.port=9001"

【讨论】:

如果它对任何人都有帮助,这种bashScriptExtraDefines 技术在打包为 Docker 映像时也适用。【参考方案2】:

这应该可以在你的 .sbt 文件中使用

javaOptions += "-Xmx2G"

完整文档:http://www.scala-sbt.org/0.13.1/docs/Examples/Quick-Configuration-Examples.html

【讨论】:

以上是关于将 JVM Opts 从 build.sbt 传递到 Play Framework 2.2.x 中的启动脚本的主要内容,如果未能解决你的问题,请参考以下文章

似乎无法在 SBT 中的分叉 JVM 中运行 Play 应用程序

使用 sbt-spark-package 插件了解 build.sbt

build.sbt 和 build.scala 有啥区别?

在 Play 2.3 的 build.sbt 中应该如何定义 routesImport?

更改后如何强制 IntelliJ IDEA 从 build.sbt 重新加载依赖项?

Sbt Plugin 添加依赖到 project/build.sbt