Скажите SBT собрать все мои зависимости вместе
При создании веб-приложения SBT может собирать все мои зависимости jar в файле WAR.
Возможно ли, чтобы SBT помещал все банки в зависимости от моего не-веб-приложения в каталог, поэтому я могу легко поместить их в свой путь к классу при запуске приложения?
Ответы
Ответ 1
Да, вы можете поместить что-то вроде этого в класс определения проекта:
val libraryJarPath = outputPath / "lib"
def collectJarsTask = {
val jars = mainDependencies.libraries +++ mainDependencies.scalaJars
FileUtilities.copyFlat(jars.get, libraryJarPath, log)
}
lazy val collectJars = task { collectJarsTask; None } dependsOn(compile)
и запустите задачу с помощью collect-jars
в консоли SBT. Это скопирует scala -library.jar и банки, используемые для компиляции в каталоге с именем lib
в том же каталоге, что и ваш каталог classes
.
Ответ 2
Вы можете использовать sbt-assembly, чтобы сделать жирную флягу со всеми зависимостями: https://github.com/sbt/sbt-assembly
Ответ 3
В моем честном мнении не беспокойтесь о sbt-сборке. Я новичок в scala, но я довольно технологичный, я обрабатываю много технологий, а sbt-assembly не чист. Просто мнение.
Я бы порекомендовал вам sbt-pack. Удивительная работа. Он также даст вам исполняемые скрипты для обоих... WINDOWS AND LINUX.
https://github.com/xerial/sbt-pack