【问题标题】:Activator : Play Framework 2.3.x : run vs. start激活器:Play Framework 2.3.x:运行与启动
【发布时间】:2015-02-11 07:40:30
【问题描述】:

为什么这两个命令的行为不同?

以生产模式启动 Play 和启动开发模式不同?

activator run -Dconfig.file=/myConfig.conf # works
activator "run -Dconfig.file=/myConfig.conf" # works

activator "start -Dconfig.file=/myConfig.conf" # Works
activator start -Dconfig.file=/myConfig.conf # Doesn't, config file not found

【问题讨论】:

  • AFAIR 这些命令使用不同的根目录?考虑到如果源代码发生更改,其中一个会重新编译所有内容,而另一个则不会。
  • 如果这是原因,那么第三个命令不应该也失败吗?

标签: scala


【解决方案1】:

这两个命令之间的根本区别是让你在这里绊倒的地方。 activator 启动一个 JVM,然后执行你在命令行中给出的命令。 runstart 的区别在于引入了另一个JVM。 start 命令在新的 JVM 中启动您的程序,而 run 不会。因此,对于您的四种情况:

activator run -Dconfig.file=/myConfig.conf # works

-D 参数将发送到激活器的 JVM,然后执行 run。它之所以有效,是因为 run 使用与激活器相同的 JVM。

activator "run -Dconfig.file=/myConfig.conf" # works

激活器的 JVM 没有 -D 参数,但它解释“run -Dconfig.file=/myConfig.conf”并相应地设置 config.file 属性,也在激活器的 JVM 中。

activator "start -Dconfig.file=/myConfig.conf" # Works

激活器启动一个新的 JVM 并将 -D 选项传递给它并启动您的程序,因此它可以工作,因为您的程序获取了 config.file 属性。

activator start -Dconfig.file=/myConfig.conf # Doesn't work, config file not found

激活器的 JVM 接收到 -D 选项,然后通过创建一个没有获得 -D 选项的新 JVM 来执行start 命令,因此它失败了。

【讨论】:

    猜你喜欢
    • 2014-12-23
    • 2014-10-08
    • 2015-12-09
    • 2015-04-19
    • 1970-01-01
    • 2014-12-08
    • 2015-06-19
    • 1970-01-01
    • 2016-05-18
    相关资源
    最近更新 更多