Почему ошибка "Недействительная команда: сборка-слияние-стратегия"?

У меня есть следующий build.sbt файл.

import AssemblyKeys._
name := "approxstrmatch"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies+="org.apache.spark" %% "spark-core" % "1.0.0"
resolvers += "AkkaRepository" at "http://repo.akka.io/releases/"
// My merge strategy is specified here.
lazy val app = Project("approxstrmatch", file("approxstrmatch"),
 settings = buildSettings ++ assemblySettings ++ Seq(
 mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
 {
 case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
 case PathList("javax", "transaction", xs @ _*) => MergeStrategy.first
 case PathList("javax", "mail", xs @ _*) => MergeStrategy.first
 case PathList("javax", "activation", xs @ _*) => MergeStrategy.first
 case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
 case "application.conf" => MergeStrategy.concat
 case "unwanted.txt" => MergeStrategy.discard
 case x => old(x)
 }
 })
 )
mainClass in assembly := Some("approxstrmatch.JaccardScore")
// jarName in assembly := "approstrmatch.jar"

Когда я выполняю следующую команду sbt assembly-merge-strategy, ошибки я не понимаю. Любая помощь была оценена.

approxstrmatch]$ sbt assembly-merge-strategy
[info] Loading project definition from /apps/sameert/software/approxstrmatch/project
[info] Set current project to approxstrmatch (in buildfile:/apps/sameert/software/approxstrmatch/)
[error] Not a valid command: assembly-merge-strategy
[error] No such setting/task
3 ответа

Мое понимание говорит мне, что нет assembly-merge-strategy задачи в sbt-assembly плагин (я могу только подозревать, что вы используете этот плагин в своей сборке).

Выполнить assembly, как описано в https://github.com/sbt/sbt-assembly#assembly-task, как "потрясающую новую задачу сборки, которая скомпилирует ваш проект, проведет ваши тесты и затем упакуйте файлы классов и все ваши зависимости в один JAR файл".


Существует настройка с именем assemblyMergeStrategy (aka assembly-merge-strategy). Это просто, что вы не будете использовать его напрямую. Способ использования sbt-assembly привязан к задаче assembly:

mergeStrategy in assembly <<= ....

Итак, вот что вам нужно сделать, чтобы вызвать его из оболочки:

$ sbt assembly::assemblyMergeStrategy
[info] blabla other things...
[info]


добавить assemblySettings в ваш файл build.sbt поможет

licensed under cc by-sa 3.0 with attribution.