Sbt 为什么会出现错误;无效的命令:程序集合并策略";?

Sbt 为什么会出现错误;无效的命令:程序集合并策略";?,sbt,sbt-assembly,Sbt,Sbt Assembly,我有以下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 me

我有以下
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"

我的理解告诉我插件中没有
汇编合并策略
任务(我只能怀疑你在构建中使用了该插件)


执行
assembly
,如中所述,这是“一个非常棒的新程序集任务,它将编译您的项目,运行您的测试,然后将您的类文件和所有依赖项打包到一个JAR文件中”。

有一个名为
assemblymergetstrategy
(又称
assemblymmergestrategy
)的设置。只是你不会直接使用它。sbt assembly使用它的方式适用于
assembly
任务:


mergeStrategy in assembly在您的构建中添加
assembly设置
。sbt将有助于

您的
项目/插件是什么。sbt
?我怀疑您使用了sbt assembly,需要您的确认。有一个名为
assembly merge strategy
-这是正确的,但OP说“当我执行以下命令时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
$ sbt assembly::assemblyMergeStrategy
[info] blabla other things...
[info] <function1>