как мне заставить sbt собрать все jar-файлы, от которых зависит мой код, в одно место? - PullRequest
36 голосов
/ 02 ноября 2011

Я новичок в жизни.Я хочу, чтобы все файлы с зависимостями, а также файл с файлами в одном месте.SBT запустит приложение, но у меня разбросаны различные зависимости, и папка .ivy полна вещей, от которых косвенно зависит мой jar-файл.так есть ли простая команда скопировать их все в одно место, чтобы я мог распространить их на другой компьютер?

Ответы [ 7 ]

19 голосов
/ 02 ноября 2011

Существует множество плагинов, которые вы можете использовать: sbt-Assembly , sbt-proguard , sbt-onejar , xitrum-package и т.д.

См. список плагинов SBT .

13 голосов
/ 17 июля 2015

Добавьте следующую строку в ваш файл build.sbt.

retrieveManaged := true

Это соберет зависимости локально

10 голосов
/ 03 ноября 2011

Создайте задачу в своем файле сборки следующим образом:

lazy val copyDependencies = TaskKey[Unit]("pack")

def copyDepTask = copyDependencies <<= (update, crossTarget, scalaVersion) map {
  (updateReport, out, scalaVer) =>
    updateReport.allFiles foreach {
      srcPath =>
        val destPath = out / "lib" / srcPath.getName
        IO.copyFile(srcPath, destPath, preserveLastModified = true)
    }
}

Добавьте задачу в проект следующим образом:

lazy val HubSensors =
  Project("HubSensors", file("HubSensors"), settings = shared ++ Seq(
    copyDepTask,
    resolvers ++= Seq(novusRels),
    libraryDependencies ++= Seq(
      jodatime
    )
  )) dependsOn(HubCameraVision, JamServiceProxy, HubDAL)

В консоли SBT введите:

project [Project Name]
pack
8 голосов
/ 09 мая 2013

Попробуйте подключаемый модуль sbt-pack https://github.com/xerial/sbt-pack,, который собирает все зависимые файлы jar в папке target / pack, а также генерирует сценарии запуска.

4 голосов
/ 05 августа 2013

Вы также можете попробовать SBT Native Packager: https://github.com/sbt/sbt-native-packager (sbt 0,7 +)

Это все еще WIP, но он будет использоваться в Play Framework 2.2 в ближайшие недели. Благодаря этому вы можете создавать автономные ZIP-файлы, пакеты Debian (DEB), установочные пакеты Windows (MSI), DMG, RPM и т. Д.

2 голосов
/ 14 апреля 2013

Документы SBT имеют список «Плагинов One Jar» :

0 голосов
/ 27 ноября 2014

Можете ли вы найти этот плагин sbt: https://github.com/anvie/sbt-onedir-plugin

...