Почему ошибка "Недопустимая команда: assembly-merge-стратегии"?

У меня есть следующее 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 ответа

Добавлять assemblySettings в твоем build.sbt поможет

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

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

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

mergeStrategy in assembly <<= ....

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

$ sbt assembly::assemblyMergeStrategy
[info] blabla other things...
[info] <function1>
Другие вопросы по тегам