Scala SBT: autonome jar
La réponse: Rendre autonome bocal avec de Simples outils de construction semble que ce dont j'ai besoin, mais il n'a pas suffisamment d'informations pour moi, c'est donc une suite.
(1) Comment puis-je adapter la réponse à mon besoin? Je ne comprends pas ce besoin d'être changé.
(2) Quelle commande dois-je exécuter pour créer la version autonome de pot?
(3) Où puis-je trouver le pot après qu'il a été créé?
Ce que j'ai essayé:
-
Coller le code dans la réponse textuellement dans mon:
project/build/dsg.scala
fichier. Le fichier a maintenant unclass ForkRun(info: ProjectInfo) extends DefaultProject(info)
(avant, utilisé pour l'exécution de projets dans une autre VM à partir de SBT) et le nouveau:
trait AssemblyProject extends BasicScalaProject
de la liés réponse.
-
J'ai aussi essayé de coller le corps (toutes
defs
et lalazy val
de laAssemblyProject
dans le corps deForkRun
.
Pour créer un jar
j'ai couru package
à la SBT rapide et obtenez:
[info] Packaging ./target/scala_2.8.1/dsg_2.8.1-1.0.jar ...
[info] Packaging complete.
J'ai donc essayé de courir le dsg_2.8.1-1.0.jar
du shell via:
java -jar dsg_2.8.1-1.0.jar
Mais j'obtiens:
Failed to load Main-Class manifest attribute from
dsg_2.8.1-1.0.jar
- Ce que cela pourrait être causé par le fait d'avoir plusieurs points d'entrée dans mon projet? Je sélectionne à partir d'une liste lorsque j'exécute run
de la SBT invite. Peut-être que j'ai besoin de spécifier la valeur par défaut lors de la création du package?
- J'ai édité ma réponse à partir de 2010 (stackoverflow.com/questions/2887655/...) pour inclure retronym du sbt-onejar plugin.
- double possible de Comment puis-je exécuter un sbt classe principale de la coque comme normal programme de ligne de commande?
- Double de stackoverflow.com/q/7134993/1305344 et stackoverflow.com/q/7195079/1305344
Vous devez vous connecter pour publier un commentaire.
Voici un article que j'ai fait sur une façon de faire un exécutable jar avec SBT:
http://janxspirit.blogspot.com/2011/01/create-executable-scala-jar-with-sbt.html
override def mainClass: Option[String] = Some("Test")
(2) l'exécution de l'assembly
tâche (au lieu depackage
) et (3) l'exécution de la mauvaise exécutable, le bon esttarget/scala_2.8.1/dsg_2.8.1-assembly-1.0.jar
sbt-assemblée est un tas de plugin pour créer un autonome pot de Scala sbt projet avec toutes ses dépendances.
Reportez-vous ce post pour plus de détails, avec un exemple.