2011-05-03 22 views
21

¿Cuál es la mejor manera de establecer el paquete objetivo para que un proyecto SBT sea un archivo jar ejecutable?Proyecto SBT para jar ejecutable java

Necesitaría agrupar scala-library.jar y establecer el manifiesto para main-method.

+1

Eche un vistazo a https://github.com/retronym/sbt-onejar. No me he probado, pero estoy interesado en saber si eso funciona. Además, si eso no funciona, retronym también apunta a https://github.com/nuttycom/sbt-proguard-plugin. – huynhjl

+0

Gracias huynhjl. Funcionó bien, pero decidí no hacerlo ya que one-jar en sí mismo parece estar lleno de carga de clases y pokery. Prefiero el enfoque mega-jar de assembly-sbt. – Synesso

Respuesta

33

Usar el plugin de montaje sbt (originalmente creado por Coda Hale, ahora mantenido por Eugene Yokota): https://github.com/sbt/sbt-assembly

Una vez que se agrega esto a su proyecto que construirá una llamada "fatjar", que es ejecutable a través de java -jar projectName-assembly.jar . Se detectará automáticamente su principal método - si hay más de uno en su origen, puede establecer explícitamente cuál usar estableciendo mainclass, por ejemplo:

mainClass in assembly := Some("com.package.ClassNameWithMain") 

Nota: he editado esta respuesta para ser UP- hasta la fecha con el lanzamiento actual de SBT (0.11+).

+0

Gracias Thomas. Es una buena. Fácil de usar. Se beneficiaría de tener proguard recortar la grasa. – Synesso

+0

Puede usar el complemento Proguard para hacer eso. Asegúrese de especificar que desea mantener la clase principal. – Philippe

+1

Sí, Proguard puede hacer esto, pero es complicado configurarlo correctamente. La belleza del sbt-assembly es lo increíblemente simple que es. –

Cuestiones relacionadas