Сборка кода Scala с сборкой sbt, ошибка

Я использую sbt 0.13.7 и Scala 2.11.4 на машине с Windows, чтобы скомпилировать свой код в толстую банку, которую я в конечном итоге хочу запустить на машине с 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?

person Varun    schedule 15.01.2015    source источник
comment
Какую версию плагина sbt-native-packager вы указываете? Предоставленный вами код работает с 1.0.0-M4 на MBP.   -  person tobym    schedule 15.01.2015


Ответы (1)


Вы используете sbt-сборку 0.12.0? Если это так, вам больше не нужен assemblySettings, так как это автоматический плагин.

Изменить:

Вы должны включить

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

в project/*.sbt как project/assembly.sbt, а не build.sbt.

person Eugene Yokota    schedule 15.01.2015
comment
Евгений, когда я включаю следующую строку в build.sbt addSbtPlugin(com.eed3si9n % sbt-assembly % 0.12.0), она не может найти ее в репозитории maven [warn] repo1.maven.org/maven2/com/eed3si9n/sbt-assembly_2.11_0.13/0.12 . 0/sbt-assembly-0.12.0.pom - person Varun; 15.01.2015
comment
Поэтому я заглянул в репозиторий и включил libraryDependencies += Defaults.sbtPluginExtra(com.eed3si9n % sbt-assembly % 0.7.2, 0.11.2, 2.9.1), который работает, но выглядит как очень старая версия. - person Varun; 15.01.2015
comment
Плагины sbt находятся в репозитории сообщества sbt — dl.bintray.com/sbt/sbt-plugin-releases/com.eed3si9n/ - person Eugene Yokota; 15.01.2015
comment
Ok. Не могли бы вы поставить галочку и принять мой ответ, чтобы этот вопрос не отображался как вопрос без ответа? - person Eugene Yokota; 18.01.2015
comment
Хм. Кажется, у меня проблема с новым плагином. SBT не жалуется на то, что нашел банку сборки, но задача сборки не появляется, когда я запускаю SBT. Вот что у меня есть в project/assembly.sbt: addSbtPlugin(com.eed3si9n % sbt-assembly % 0.12.0) - person marekinfo; 21.01.2015
comment
В build.sbt у меня есть: резолверы ++= Seq( выпуски репозитория Typesafe на repo.typesafe.com /typesafe/releases, снимки Sonatype на oss.sonatype.org/content/repositories/ моментальные снимки, выпуски Sonatype по адресу oss.sonatype.org/service/local /staging/deploy/maven2 ) У меня SBT 0.13.7, поэтому автоплагин должен работать. Кроме того, мне кажется, что структура каталогов Bintray не будет соответствовать пути, переданному в приведенном выше вызове addSbtPlugin. Любая идея, почему задача нового плагина не отображается? - person marekinfo; 21.01.2015
comment
Если это проблема добавления enablePlugins(), как это работает в build.sbt, а не в Build.scala? Любые другие причины, по которым задача плагина невидима? - person marekinfo; 21.01.2015
comment
Кстати, я следовал руководству по миграции для build.sbt для SBT 0.13.6+: github.com/sbt/sbt-assembly/blob/master/Migration.md - person marekinfo; 21.01.2015