2011-12-12 97 views
8

我正在嘗試install sbt-assembly by following the instructions以使獨立的jar可以在未安裝scala的情況下在計算機上運行。使用sbt安裝sbt-assembly 0.11.2

到目前爲止,這些都是我採取的步驟。

我創建了一個plugins.sbt文件:

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

我增加了以下我build.sbt文件的開頭:

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

seq(assemblySettings: _*) 

但是當我運行SBT,我得到的以下錯誤:

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

你得到一個錯誤該插件無法下載的消息? – Christian

+0

@Christian - 不,實際上,我沒有收到那樣的消息。我相信這個插件正在被下載。 – dsg

+0

它在這裏工作,完全符合你上面的陳述(我的插件仍然在'project/plugins/build.sbt'中,現在已被棄用,但我懷疑這是否有所不同)。如果你重新加載乾淨的更新會發生什麼,它會下載插件嗎? –

回答

12
  1. 通過在bash提示符下鍵入

    $ sbt sbt-version

    請確保您正在運行的SBT版本至少0.11。

  2. 請確保您有插件文件設置如下:

     
    $ cat sbt/project/plugins.sbt 
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 
    
  3. 讓你的build文件(build.sbt)是這樣的:

     
    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

對不起新手問題,如果我的項目不使用build.sbt,但使用從Build生成的特殊類(我相信它的sbt.Build)。我想將其轉換爲fat-jar,並且需要添加以下在示例項目中看到的選項 - seq(webSettings:_ *)和assemblySettings。該項目在這裏 - https://github.com/zcox/lift-jetty-fatjar – kirhgoff

1

你不應該導入插件設置成build.sbt基本配置):1)build.sbt不是正常的Scala源文件2)插件設置是預先導入的。

所以只需應該做的,只有當你使用全/擴展構建配置

seq(assemblySettings: _*) 

進口是必需的。

3

確保您沒有放置的項目/插件文件夾。這可能會阻止其他指定插件的機制。

相關問題