Activator:Play Framework 2.3.x:run vs. start

And*_*ann 10 scala

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

在生产模式下启动Play并启动dev模式有何不同?

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
Run Code Online (Sandbox Code Playgroud)

Rei*_*cer 21

两个命令之间的根本区别在于绊倒你.在activator启动JVM,然后执行你的命令行上给出的指令.run和之间的区别start是另一个JVM的引入.该start命令在新JVM中启动程序,而run不是.那么,对于你的四个案例:

activator run -Dconfig.file=/myConfig.conf # works
Run Code Online (Sandbox Code Playgroud)

-D参数将转到激活器的JVM,然后执行run.它的工作原理是因为run使用与激活器相同的JVM.

activator "run -Dconfig.file=/myConfig.conf" # works
Run Code Online (Sandbox Code Playgroud)

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

activator "start -Dconfig.file=/myConfig.conf" # Works
Run Code Online (Sandbox Code Playgroud)

激活器启动一个新的JVM并将-D选项传递给它并启动你的程序,因此它的工作原理是因为你的程序获得了config.file属性.

activator start -Dconfig.file=/myConfig.conf # Doesn't work, config file not found
Run Code Online (Sandbox Code Playgroud)

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