2011-12-12 12 views
8

Próbuję wykonać install sbt-assembly by following the instructions w celu utworzenia samodzielnego słoika, który można uruchomić na komputerze bez zainstalowanego scala.instalowanie sbt-assembly z sbt 0.11.2

Do tej pory są to kroki, które podjąłem.

stworzyłem plugins.sbt plik:

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

I dodaje następujące do początku mojego pliku build.sbt:

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

seq(assemblySettings: _*) 

ale kiedy biegnę SBT, otrzymuję następujący błąd:

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

Czy pojawia się błąd wiadomość, że wtyczki nie można pobrać? – Christian

+0

@Christian - Nie, właściwie nie mam takiej wiadomości. Uważam, że wtyczka jest pobierana. – dsg

+0

Działa tutaj, dokładnie z powyższymi instrukcjami (mam wtyczkę w 'projekcie/plugins/build.sbt' która jest teraz przestarzała, ale wątpię, że to robi różnicę). Co stanie się, jeśli wykonasz 'sbt reload clean update', czy pobierze wtyczkę? –

Odpowiedz

12
  1. Upewnij używasz SBT w wersji co najmniej 0,11 wpisując

    $ sbt sbt-version

    w wierszu bash.

  2. Upewnij się, że wtyczki file skonfigurować w następujący sposób:

     
    $ cat sbt/project/plugins.sbt 
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 
    
  3. Dodać plik budowlanej (build.sbt) wyglądać tak:

     
    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

Przepraszamy za pytanie początkujących, co jeśli mój projekt nie używa build.sbt, ale używa specjalnej klasy pochodzącej z Build (Wierzę w jego sbt.Build). Chcę przekonwertować go do słoika tłuszczu i muszę dodać następujące opcje, które widzę w przykładowym projekcie - seq (webSettings: _ *) i assemblySettings. Projekt jest tutaj - https://github.com/zcox/lift-jetty-fatjar – kirhgoff

1

nie należy zaimportować ustawienia wtyczki do build.sbt (podstawowa konfiguracja): 1) build.sbt nie jest normalnym plikiem źródłowym Scala 2) ustawienia wtyczki są wcześniej importowane.

Więc po prostu należy zrobić

seq(assemblySettings: _*) 

Imports są wymagane tylko podczas korzystania z konfiguracji pełna/rozszerzony gromadzeniu.

3

Upewnij się, że nie masz w pobliżu folderu projektu/wtyczek. Może to uniemożliwić działanie innych mechanizmów określania wtyczek.