2011-12-12 87 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

确保您没有放置的项目/插件文件夹。这可能会阻止其他指定插件的机制。