web-dev-qa-db-fra.com

comment obtenir sbt for rassembler tous les fichiers.

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?

36
Tim Pigden

Vous pouvez utiliser de nombreux plugins: sbt-Assembly , sbt-proguard , sbt-onejar , xitrum-package etc.

Voir la liste des plugins SBT .

19
pr1001

Ajoutez la ligne suivante à votre fichier build.sbt

retrieveManaged := true

Cela rassemblera les dépendances localement

13
CatsLoveJazz

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
10
torrens

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.

8
leo

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.

4
Adrien Aubel

Les documents SBT ont une liste de "One Jar Plugins" :

2
bstpierre

Puissiez-vous chercher ce plugin sbt: https://github.com/anvie/sbt-onedir-plugin

0
anvie