Если вы используете 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 - своего рода хитрость и убивает приложение при запуске. При замене reStart
на run
он работает отлично, но не вызывает изменений.
screen -d -m sbt runAppServer; screen -d -m sbt runWebServer
Так что приведенный выше код просто не ведет себя так, как ожидалось. Вместо пользовательских задач мы можем запускать их в отдельных windows следующим образом:
screen -dmS "appserver" sh -c "sbt 'project appserver;~reStart'; exec bash" ; screen -dmS "webserver" sh -c "sbt runWebServer; exec bash"
Также sbt runWebServer
можно заменить на sbt 'project anothersubmodule;~run'
, если вы sh.
Я создал простой демонстрационный проект, вы можете найти здесь . Чтобы начать, вы можете позвонить просто: ./starter.sh
ПРИМЕЧАНИЕ: вы можете установить команду screen
, если вы не легко.