2011-12-12 3 views
8

Sto provando a install sbt-assembly by following the instructions per creare un vaso autonomo che può essere eseguito su un computer senza scala installata.installazione sbt-assembly con sbt 0.11.2

Finora questi sono i passaggi che ho preso.

ho creato un file plugins.sbt:

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

E ho aggiunto il testo seguente all'inizio del mio file build.sbt:

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

seq(assemblySettings: _*) 

Ma quando corro SBT, ho la seguente errore:

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

si ottiene un errore messaggio che il plugin non può essere scaricato? – Christian

+0

@Christian - No, in realtà, non ricevo un messaggio del genere. Credo che il plugin sia stato scaricato. – dsg

+0

Funziona qui, esattamente con le dichiarazioni che hai sopra (ho ancora il plugin in 'project/plugins/build.sbt' che ora è deprecato, ma dubito che questo faccia la differenza). Cosa succede se esegui "sbt reload clean update", scarica il plugin? –

risposta

12
  1. Assicurarsi si esegue sbt versione almeno 0.11 digitando

    $ sbt sbt-version

    al prompt bash.

  2. Assicurarsi di avere i plugin file impostato come segue:

     
    $ cat sbt/project/plugins.sbt 
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 
    
  3. Fai il file build (build.sbt) simile a questa:

     
    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

Ci scusiamo per la domanda per principianti, e se il mio progetto non usa build.sbt ma usa una classe speciale derivata da Build (credo che sia sbt.Build). Voglio convertirlo in fat-jar e ho bisogno di aggiungere le seguenti opzioni che vedo nel progetto di esempio - seq (webSettings: _ *) e assemblySettings. Il progetto è qui - https://github.com/zcox/lift-jetty-fatjar – kirhgoff

1

Si consiglia di non importare le impostazioni del plugin in build.sbt (configurazione di base): 1) build.sbt non è un normale file sorgente Scala 2) le impostazioni del plug-in sono pre-importate.

Così si dovrebbe fare semplicemente

seq(assemblySettings: _*) 

Le importazioni sono necessarie solo quando si utilizza la configurazione generazione completa/estesa.

3

Assicurarsi di non disporre di una cartella di progetto/plug-in. Ciò potrebbe impedire il funzionamento di altri meccanismi di specifica dei plug-in.