J'ai lu en ligne qu'il est possible de créer un fichier jar à partir de scala code qui pourrait être exécuté à partir de la cli. Tout a écrit est le code suivant. Comment puis-je faire un fichier jar à partir de celui-ci ? J'utilise sbt 0.13.7.
object Main extends App {
println("Hello World from Scala!")
}
Pour pouvoir effectuer des tâches de construction complexes avec Scala, vous devez utiliser SBT comme outil de construction: c'est une façon par défaut de créer des packages d'application. Pour ajouter la prise en charge SBT à votre projet, créez simplement un build.sbt
fichier dans le dossier racine:
name := "hello-world"
version := "1.0"
scalaVersion := "2.11.6"
mainClass := Some("com.example.Hello")
Pour créer un fichier jar avec votre application au cas où si vous n'avez pas de dépendances externes, vous pouvez exécuter sbt package
et il va construire un hello-world_2.11_1.0.jar
fichier avec votre code pour pouvoir l'exécuter avec Java -jar hello-world.jar
. Mais vous devrez certainement inclure certaines dépendances avec votre code, au moins à cause d'un runtime Scala.
Utilisez sbt-Assembly plugin pour construire un gros pot avec toutes vos dépendances. Pour l'installer, ajoutez une ligne
addSbtPlugin("com.eed3si9n" % "sbt-Assembly" % "0.12.0")
à ton project/plugins.sbt
fichier (et créez-le s'il n'y en a pas) et exécutez sbt Assembly
tâche depuis la console.
En plus de sbt
, considérez également cette ligne de commande simple,
scalac hello.scala -d hello.jar
qui crée le fichier jar. Exécutez-le avec
scala hello.jar
Il est également possible de scripter le code source en ajoutant cet en-tête
#!/bin/sh
exec scala -savecompiled "$0" "$@"
!#
et appeler la méthode principale avec Main.main(args)
(notez chmod +x hello.sh
pour rendre le fichier exécutable). Ici, savecompiled
créera un fichier jar lors de la première invocation.
Vous pouvez essayer ce plugin SBT: https://github.com/sbt/sbt-native-packager
J'ai créé des packages Linux Debian avec ce plugin (Windows MSI devrait également être possible).
sbt: publishLocal
puis allez dans le dossier cible, probablement appelé scala-2.**