我有2个sbt项目是可运行的(akka应用程序和另一个播放应用程序)。
是否可以同时运行这两个应用程序,并使用~reStart,这样它们就可以刷新对我的项目所做的任何更改?
有什么正确操作的建议,这样我就不会内存不足了吗?
发布于 2020-04-08 01:56:23
如果你使用的是Play Framework的最新版本,你可以在没有任何插件的情况下使用~run。对于独立的akka应用,你可以使用一个叫做sbt-revolver的库
runAkkaServer := {
(reStart in Compile in `akka-server`).evaluated
}
runWebServer := {
(~run in Compile in `web-server`).evaluated
}
mainClass in reStart := Some("com.example.MainAkka")
val runAkkaServer = inputKey[Unit]("Runs akka-server")
val runWebServer = inputKey[Unit]("Runs web-server")注意:您可以在没有自定义任务的情况下在重启模式下运行这两个应用程序: 1. ~run - Play服务器2. reStart -独立
更新:
我已经尝试使用下面的命令对他们两个,似乎sbt-revolver是一种诡计和杀死应用程序在启动。当用run替换reStart时,它可以完美地工作,但不会触发更改。
screen -d -m sbt runAppServer; screen -d -m sbt runWebServer所以上面的代码并没有达到预期的效果。我们可以在单独的窗口中运行它们,而不是自定义任务,如下所示:
screen -dmS "appserver" sh -c "sbt 'project appserver;~reStart'; exec bash" ; screen -dmS "webserver" sh -c "sbt runWebServer; exec bash"如果你愿意,也可以用sbt 'project anothersubmodule;~run'代替sbt runWebServer。
我已经创建了一个简单的演示项目,您可以找到here以便启动,您可以只调用:./starter.sh
注意:如果您不容易安装screen命令,可以安装它。
发布于 2020-04-29 04:01:26
打开两个不同的终端选项卡;cd进入每个选项卡中的特定目录,然后使用SBT运行。
sbt run对于多个web应用程序,请指定不同的端口:
sbt run -Dhttp.port=8888https://stackoverflow.com/questions/61085900
复制相似问题