使用sbt程序集构建Scala代码,失败

时间:2015-01-15 12:41:43

标签: scala sbt-assembly

我在Windows机器上使用sbt 0.13.7和Scala 2.11.4将我的代码编译成胖jar,我最终想在Linux机器上运行。

以下是我的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?

1 个答案:

答案 0 :(得分:3)

您使用的是sbt-assembly 0.12.0吗?如果是这样,那么您不再需要assemblySettings,因为它是auto plugin

修改

你必须包括

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0") 
<{1>}中的

project/*.sbt,而不是project/assembly.sbt