Ответ 1
Существует много плагинов, которые вы можете использовать: sbt-assembly, sbt-proguard, sbt-onejar, xitrum-package и т.д.
См. список плагинов SBT.
Я новичок в sbt. Я хочу, чтобы он поместил все файлы зависимостей jar
, а также мой файл JAR в одно место. SBT запустит приложение, но у меня разбросаны различные зависимости, и папка .ivy
полна вещей, от которых косвенно зависит мой jar файл.
Итак, есть ли простая команда, чтобы скопировать их все в одно место, чтобы я мог распространить их на другой компьютер?
Существует много плагинов, которые вы можете использовать: sbt-assembly, sbt-proguard, sbt-onejar, xitrum-package и т.д.
См. список плагинов SBT.
Добавьте следующую строку в свой build.sbt
файл.
retrieveManaged := true
Это будет собирать зависимости локально
Создайте задачу в файле сборки следующим образом:
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
Попробуйте плагин sbt-pack https://github.com/xerial/sbt-pack, который собирает все зависимые баночки в папке target/pack, а также создает сценарии запуска.
Вы также можете попробовать 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 и т.д.
В документах SBT есть список "One Jar Plugins" :
- sbt-assembly: https://github.com/sbt/sbt-assembly
- xsbt-proguard-plugin: https://github.com/adamw/xsbt-proguard-plugin
- sbt-deploy: https://github.com/reaktor/sbt-deploy
- sbt-appbundle (os x standalone): https://github.com/sbt/sbt-appbundle
- sbt-onejar (пакеты вашего проекта с использованием One-JAR ™): https://github.com/sbt/sbt-onejar
Возможно, вы ищете этот плагин sbt: https://github.com/anvie/sbt-onedir-plugin