Развертывание двоичных файлов Scala без зависимостей

Есть ли простой способ скопировать Scala Jar (~ 1 МБ) на сервер, а затем заставить SBT вытащить зависимости (~ 40 МБ ) ему нужно и запустить его?

Я видел sbt-onejar и sbt-assembly , но они объединяют все зависимости в одну банку, которая в моем случае становится ~ 45 МБ, что занимает слишком много времени для загрузки в сервер.

В настоящий момент я использую Capistrano для извлечения кода из GitHub и его компиляции. Затем я запускаю его с помощью плагина xsbt-start-script-plugin - аналогично тому, как это делает Heroku.

Проблема в том, что компиляция на серверах занимает много времени (я использую EC2). EC2 Micro с оперативной памятью ~ 600 МБ занимает безумно много времени и иногда случайно убивает процесс. Я использую небольшой экземпляр EC2 (оперативная память 1,7 ГБ), который в настоящий момент работает, но по мере увеличения базы кода и добавления дополнительных серверов это может стать проблематичным.

Идеальным рабочим процессом было бы скомпилировать исходные коды Scala локально (или на сервере CI), скопировать на сервер, добавить SBT дополнительные зависимости, добавленные с момента последней сборки (существующие будут получены из локального кэшированного репозитория ivy), а затем предоставить мне с помощью простого скрипта для запуска службы с Upstart в Ubuntu 10.04.

Я также хотел бы услышать, как другие пользователи Scala развертывают свой код.


(код из «ответа» позже опубликован OP)

FWIW вот мои файлы сборки.

build.sbt

import com.typesafe.startscript.StartScriptPlugin
name := "XXX"
version := "0.1.0"
scalaVersion := "2.9.1"
resolvers += "XXX" at "http://repo.XXX.XXX"
libraryDependencies += "XXXX" %% "backend" % "0.1.0"
seq(StartScriptPlugin.startScriptForJarSettings: _*)
mainClass in Compile := Some("XXX.app.Main")

проект / сборка.sbt

resolvers += Classpaths.typesafeResolver
addSbtPlugin("com.typesafe.startscript" % "xsbt-start-script-plugin" % "0.5.0")
addSbtPlugin("com.eed3si9n" % "sbt-dirty-money" % "0.0.1")

10
задан Magoo 12 January 2014 в 23:06
поделиться