Запуск нескольких приложений с помощью 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, которая обеспечивает автоматизированный способ создания таких сценариев.
надеюсь, что это помогает, Муки