Можно ли одновременно запускать 2 проекта sbt? - PullRequest
1 голос
/ 07 апреля 2020

У меня есть 2 запущенных проекта sbt (приложение akka и другое игровое приложение).

Можно ли запустить оба из них и использовать ~ reStart, чтобы они ссылались sh на любые изменения в моем проект?

Есть ли какие-нибудь советы по правильному выполнению этой задачи, чтобы у меня тоже не хватило памяти?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Если вы используете 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, если вы не легко.

0 голосов
/ 28 апреля 2020

Откройте две разные вкладки терминала; cd в указанный каталог c на каждой вкладке, а затем запустите с SBT.

sbt run

Для нескольких веб-приложений укажите другой порт:

sbt run -Dhttp.port=8888
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...