【问题标题】:Cannot seem to run Play application in a forked JVM from within SBT似乎无法在 SBT 中的分叉 JVM 中运行 Play 应用程序
【发布时间】:2022-01-13 17:52:00
【问题描述】:

我有一个使用 构建的 Scala Play Framework 网络应用程序(使用 Scala v2.13.7 和 Play v2.8.8) SBT (v1.5.5)。

我的build.sbt 包括以下内容:

lazy val root = (project in file("."))
.enablePlugins(PlayScala)
.settings(

  // etc.

  fork := true,
  javaOptions ++= Seq(
    "-Xms1G",
    "-Xmx8G",
  ),
)

但是,当我执行 sbt run 时,不会为 Web 应用程序生成单独的 JVM,并且内存设置是 SBT JVM 的设置(-Xms1024m-Xmx1024m)。

PlayScala 插件在运行 Web 应用程序本身时会干扰或禁用分叉吗?我可以强制 Web 应用程序使用 SBT 中的分叉 JVM 吗?

【问题讨论】:

    标签: scala playframework sbt


    【解决方案1】:

    根据 sbt 文档Forked JVM Options,您可能想要执行以下操作:

    lazy val root = (project in file("."))
    .enablePlugins(PlayScala)
    .settings(
    
      // etc.
    
      javaOptions ++= Seq(
        "-Xms1G",
        "-Xmx8G",
      ),
      fork := true,
      run / javaOptions += "-Xms1G -Xmx8G",
    )
    

    我对游戏不是很熟悉,但这应该可以解决您面临的问题。

    【讨论】:

    • 您似乎建议添加run / javaOptions 设置,对吗?问题是尽管设置了fork := true,但并未创建分叉进程,因此此更改没有任何区别。
    【解决方案2】:

    让我自己进行长时间的调查,如果你想要做的只是影响 java 选项,将它们设置在一个名为 .jvmopts 的文件中(每行一个或一个都可以)在 sbt 项目根文件夹中(-as mentioned elsewhere 已经)。

    【讨论】:

    • 我意识到我可以做到这一点,但问题是我无法创建分叉进程,尽管 SBT 构建中存在forked := trueJava 选项只是为这里提出的问题添加风味,但我确实需要在运行时分叉 Web 应用程序。
    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2016-06-28
    • 2023-03-27
    • 1970-01-01
    • 2014-04-12
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多