Je suis nouveau sur sbt. Je veux qu'il mette toutes les dépendances jar mouches ainsi que mon fichier jar au même endroit. SBT exécutera l'application, mais j'ai plusieurs dépendances dispersées et un dossier .ivy plein de choses dont dépend indirectement mon fichier jar. alors Y at-il une commande simple pour les copier tous dans un seul endroit afin que je puisse les distribuer sur une autre machine?
Vous pouvez utiliser de nombreux plugins: sbt-Assembly , sbt-proguard , sbt-onejar , xitrum-package etc.
Voir la liste des plugins SBT .
Ajoutez la ligne suivante à votre fichier build.sbt
.
retrieveManaged := true
Cela rassemblera les dépendances localement
Créez une tâche dans votre fichier de construction comme ceci:
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)
}
}
Ajouter la tâche à un projet comme celui-ci:
lazy val HubSensors =
Project("HubSensors", file("HubSensors"), settings = shared ++ Seq(
copyDepTask,
resolvers ++= Seq(novusRels),
libraryDependencies ++= Seq(
jodatime
)
)) dependsOn(HubCameraVision, JamServiceProxy, HubDAL)
Dans la console SBT, tapez:
project [Project Name]
pack
Essayez le plugin sbt-pack https://github.com/xerial/sbt-pack , qui collecte tous les fichiers JAR dépendants dans le dossier target/pack et génère également des scripts de lancement.
Vous pouvez également essayer SBT Native Packager: https://github.com/sbt/sbt-native-packager (sbt 0.7+)
Ceci est toujours un WIP, mais sera utilisé dans Play Framework 2.2 dans les semaines à venir . Grâce à cela, vous pouvez créer des fichiers Zip autonomes, des packages Debian (DEB), des packages d'installation Windows (MSI), DMG, RPM, etc. sur.
Les documents SBT ont une liste de "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 (Paquets votre projet en utilisant One-JAR ™): https://github.com/sbt/sbt-onejar
Puissiez-vous chercher ce plugin sbt: https://github.com/anvie/sbt-onedir-plugin