Подтвердить что ты не робот

Как мне получить sbt для сбора всех файлов jar, от которых зависит мой код, в одном месте?

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

Итак, есть ли простая команда, чтобы скопировать их все в одно место, чтобы я мог распространить их на другой компьютер?

4b9b3361

Ответ 2

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

retrieveManaged := true

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Вы также можете попробовать 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 и т.д.