Запуск нескольких приложений с помощью sbt

Моя структура каталогов настроена как таковая.

src/main/scala/main/Main.scala
src/main/scala/scripts/MainScript.scala

Сценарий - это фоновое задание, которое будет запущено.

Я использовал sbt-assembly прежде чем упаковать основной файл в jar для развертывания, но я не уверен, как создать два отдельных jar с sbt-assembly или же sbt-native-packager, Как бы я поступил так и какой подход был бы лучшим для этой проблемы?

Я хотел бы сделать что-то похожее на это.

java -jar main.jar $PORT
java -jar scriptMain.jar

1 ответ

Один из способов решить эту проблему только с помощью native-packager заключается в следующем.

  • Поместите все свои основные классы в src/main/scala
  • Определить mainClass in Compile := Some("foo.bar.Main") это должно работать по умолчанию
  • добавить дополнительные скрипты в src/universal/bin что вы хотели бы предоставить. Эти сценарии могут вызывать основной сценарий, сгенерированный native-packager, и устанавливать -main параметр класса, который вы хотите вызвать.

Теперь у вас есть выходной пакет (например, zip, rpm, deb), который имеет следующую структуру. Предполагая, что ваше приложение называется myApp, и вы предоставили другие сценарии bin, называемые otherApp1 / otherApp2

lib/ (jars live here)
conf/ (configuration files here, if any)
bin/
  myApp
  otherApp1
  otherApp2

К сожалению, у меня нет примера для сценария (мой bash-foo недостаточно хорош для мгновенной магии на SO). В конце сценарии (otherApp1,otherApp2) должны просто передать полученные параметры сценарию native-packager (myApp).

Существует проблема № 633, которая обеспечивает автоматизированный способ создания таких сценариев.

надеюсь, что это помогает, Муки

Другие вопросы по тегам