2011-12-12 35 views
8

Estoy tratando de install sbt-assembly by following the instructions con el fin de hacer un tarro independiente que se puede ejecutar en una computadora sin scala instalado.instalando sbt-assembly con sbt 0.11.2

Hasta ahora estos son los pasos que he dado.

he creado un archivo de plugins.sbt:

$ cat sbt/project/plugins.sbt 
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 

Y añade lo siguiente al comienzo de mi archivo build.sbt:

$ head -n3 sbt/build.sbt 
import AssemblyKeys._ // put this at the top of the file 

seq(assemblySettings: _*) 

Pero cuando corro SBT, consigo el siguiente error:

sbt/build.sbt:1: error: not found: value AssemblyKeys 
import AssemblyKeys._ 
+0

¿Te obtiene un error mensaje de que el complemento no se puede descargar? – Christian

+0

@Christian - No, en realidad, no recibo un mensaje como ese. Creo que el complemento se está descargando. – dsg

+0

Funciona aquí, exactamente con las afirmaciones que tienes arriba (tengo el complemento aún en 'project/plugins/build.sbt' que ahora está en desuso, pero dudo que esto haga la diferencia). ¿Qué sucede si '' sbt reload clean update', ¿descarga el plugin? –

Respuesta

12
  1. Asegúrese de que está ejecutando la versión SBT al menos 0,11 escribiendo

    $ sbt sbt-version

    en el indicador bash.

  2. Asegúrate de que tienes los plugins archivo de conjunto de la siguiente manera:

     
    $ cat sbt/project/plugins.sbt 
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 
    
  3. Haga su fichero de construcción (build.sbt) tener este aspecto:

     
    import AssemblyKeys._ 
    
    seq(assemblySettings: _*) 
    
    name := "my_project" 
    
    version := "1.0" 
    
    scalaVersion := "2.9.1" 
    
    libraryDependencies ++= Seq(
        "org.scalatest" %% "scalatest" % "1.6.1" % "test", 
        "commons-lang" % "commons-lang" % "2.6" 
    ) 
    
    traceLevel in run := 0 
    
    fork in run := true 
    
    scalacOptions ++= Seq("-optimize") 
    
    // The following is the class that will run when the jar is compiled! 
    
    mainClass in assembly := Some("MyMain") 
    
+0

Lo siento por la pregunta de novato, ¿qué pasa si mi proyecto no utiliza build.sbt pero utiliza una clase especial derivada de Build (creo que es sbt.Build). Quiero convertirlo a fat-jar y necesito agregar las siguientes opciones que veo en el proyecto de ejemplo: seq (webSettings: _ *) y assemblySettings. El proyecto está aquí - https://github.com/zcox/lift-jetty-fatjar – kirhgoff

1

no debería importar la configuración del plugin en build.sbt (configuración básica): 1) build.sbt no es un archivo fuente normal de Scala 2) la configuración del complemento se importa previamente.

por lo que simplemente debe hacer se requieren

seq(assemblySettings: _*) 

Las importaciones sólo cuando se utiliza la configuración completa /extendido acumulación.

3

Asegúrate de que no tienes una carpeta de proyectos/complementos por ahí. Esto puede evitar que otros mecanismos de especificación de complementos funcionen.