2016-04-01 2 views
4

У меня есть структура каталогов, созданная как таковая.Запуск нескольких приложений с помощью sbt

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

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

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

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

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

Sbt родной упаковщик создает развертываемые артефакты для вас. Вы можете использовать Sbt assembly и Sbt native packager в тандеме. Мы создаем пакеты rpm для искры, где используется толстая банда, созданная с помощью сборки Sbt. – Manas

+0

@Manas Возможно ли скомпилировать решение с 'sbt-assembly' внутри' build.sbt' для создания двух отдельных JAR одновременно? Я использовал его раньше, чтобы создать один JAR. Потому что, как только у меня есть, я могу создать еще один файл, чтобы делать то, что происходит в вышеупомянутом блоке кода. – Petesta

+0

@Manas Должен ли я создавать многопроектную сборку? Поэтому у меня был бы общий код в 'common', MainScript в' script' и Main в 'main'. И построить JARs таким образом? – Petesta

ответ

1

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

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

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

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

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

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

надежда, что помогает, Muki

Смежные вопросы