2015-01-15 41 views
4

我在Windows机器上使用sbt 0.13.7和Scala 2.11.4将我的代码编译成一个fat jar,我最终想要在Linux机器上运行。Scala代码与sbt程序集一起构建,失败

下面是我的build.sbt文件:

import AssemblyKeys._ 

name := "Simple Project" 
version := "1.0" 
organization := "com.myorg" 
scalaVersion := "2.11.4" 
libraryDependencies ++= Seq(
    // Spark dependency 
    "org.apache.spark" % "spark-core_2.10" % "1.2.0" % "provided", 
    // Third party libraries 
    "net.sf.jopt-simple" % "jopt-simple" % "4.3", 
    "joda-time" % "joda-time" % "2.0" 
) 
libraryDependencies += Defaults.sbtPluginExtra("com.eed3si9n" % "sbt-assembly" % "0.7.2", "0.11.2", "2.9.1") 
// This statement includes the assembly plugin capabilities 
assemblySettings 
// Configure jar named used with the assembly plug-in 
jarName in assembly := "my-project-assembly.jar" 
// A special option to exclude Scala itself form our assembly jar, since Spark 
// already bundles Scala. 
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false) 

我面对的错误是:

build.sbt:16: error: type mismatch; 
found : Seq[sbt.Project.Setting[_]] 
required: sbt.internals.DslEntry 
assemblySettings 
^ 
[error] Type error in expression 
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? 
+0

您指定的是什么版本的sbt-native-packager插件?您提供的代码适用于MBP上的1.0.0-M4。 – tobym

回答

3

是否使用SBT组装0.12.0?如果是这样,您不需要assemblySettings,因为它是auto plugin

编辑

你必须包括

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0") 
project/*.sbt

project/assembly.sbt,不build.sbt

+0

Eugene,当我在build.sbt addSbtPlugin(“com.eed3si9n”%“sbt-assembly”%“0.12.0”)中包含以下行时,它无法在maven repo上找到它[warn] https://repo1.maven .org/maven2/com/eed3si9n/sbt-assembly_2.11_0.13/0.12 .0/sbt-assembly-0.12.0.pom – Varun

+0

所以我查看了回购和包括libraryDependencies + = Defaults.sbtPluginExtra(“com.eed3si9n “%”sbt-assembly“%”0.7.2“,”0.11.2“,”2.9.1“)这可以工作,但似乎是一个非常旧的版本 – Varun

+0

sbt插件是在sbt社区回购 - http:// dl .bintray.com/sbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_2.10/sbt_0.13/0.12.0/ –

相关问题