web-dev-qa-db-fra.com

Comment créer un fichier jar à partir de scala

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!")
}
17
eddard.stark

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.

16
shutty

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.

18
elm

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).

3
codejitsu

sbt: publishLocal puis allez dans le dossier cible, probablement appelé scala-2.**

2
Mikhail Kobenko