Скажите SBT, чтобы собрать все мои зависимости вместе
При создании веб-приложения SBT может собрать все мои зависимости jar в WAR-файл.
Возможно ли, чтобы SBT поместил все фляги, от которых я зависел, в моем не-веб-приложении в каталог, чтобы я мог легко поместить их в мой путь к классу при запуске приложения?
3 ответа
Да, вы можете поместить что-то вроде этого в ваш класс определения проекта:
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 и jar-файлы, используемые для компиляции, в каталог с именем lib
в том же каталоге, что и ваш classes
каталог.
По моему честному мнению, не беспокойтесь о sbt-сборке. Я новичок в scala, но я довольно технологичен, я использую множество технологий и sbt-сборка, это не чисто. Просто мнение.
Я бы порекомендовал вам sbt-pack. Потрясающая работа. Он также даст вам исполняемые скрипты, как для Windows, так и для Linux.
Вы можете использовать sbt-assembly, чтобы сделать толстый флягу со всеми зависимостями: https://github.com/sbt/sbt-assembly