how - Scala SBT: jarra independiente
sbt scala (2)
La respuesta: hacer un frasco independiente con la herramienta de compilación simple parece ser lo que necesito, pero no tenía suficiente información para mí, así que este es un seguimiento.
(1) ¿Cómo adapto la respuesta a mi necesidad? No entiendo qué necesitaría ser cambiado.
(2) ¿Qué comando ejecuto para crear el frasco independiente?
(3) ¿Dónde puedo encontrar el frasco después de haberlo creado?
Lo que he intentado:
Pegando el código en la respuesta vinculada literalmente en mi archivo:
project/build/dsg.scala
. El archivo ahora tiene unclass ForkRun(info: ProjectInfo) extends DefaultProject(info)
(de antes, utilizado para ejecutar proyectos en una máquina virtual separada de SBT) y el nuevo:
trait AssemblyProject extends BasicScalaProject
De la respuesta enlazada.
También intenté pegar el cuerpo (todas las
defs
y el valorlazy val
delAssemblyProject
en el cuerpo deForkRun
.
Para crear un jar
, ejecuté el package
en el indicador SBT y obtuve:
[info] Packaging ./target/scala_2.8.1/dsg_2.8.1-1.0.jar ...
[info] Packaging complete.
Así que intenté ejecutar el dsg_2.8.1-1.0.jar
desde el shell a través de:
java -jar dsg_2.8.1-1.0.jar
Pero me sale:
Failed to load Main-Class manifest attribute from
dsg_2.8.1-1.0.jar
¿Podría ser esto causado por tener múltiples puntos de entrada en mi proyecto? Selecciono de una lista cuando ejecuto run
desde el indicador SBT. ¿Quizás necesito especificar el valor predeterminado al crear el paquete?
Aquí hay una reseña que hice sobre una forma de hacer un jar ejecutable con SBT:
http://janxspirit.blogspot.com/2011/01/create-executable-scala-jar-with-sbt.html
sbt-assembly es un complemento de sbt para crear un tarro independiente del proyecto sbt de Scala con todas sus dependencias.
Consulte esta publicación para más detalles con un ejemplo.