Проблемы стратегии сборки-слияния при использовании sbt-assembly

Я пытаюсь преобразовать проект Scala в развертываемую толстую банку, используяSBT-сборка, Когда я запускаю задачу сборки в sbt, я получаю следующую ошибку:

Merging 'org/apache/commons/logging/impl/SimpleLog.class' with strategy 'deduplicate'
    :assembly: deduplicate: different file contents found in the following:
    [error] /Users/home/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:org/apache/commons/logging/impl/SimpleLog.class
    [error] /Users/home/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.6.4.jar:org/apache/commons/logging/impl/SimpleLog.class

Теперь из документации по сборке sbt:

Если несколько файлов имеют один и тот же относительный путь (например, ресурс с именем application.conf в нескольких JAR-файлах зависимостей), стратегия по умолчанию заключается в проверке того, что все кандидаты имеют одинаковое содержимое, и в противном случае выдает ошибку. Это поведение может быть настроено для каждого отдельного пути с помощью одной из следующих встроенных стратегий или написания собственной:

MergeStrategy.deduplicate это значение по умолчанию, описанное вышеMergeStrategy.first выбирает первый из подходящих файлов в порядке пути к классамMergeStrategy.last выбирает последнийMergeStrategy.singleOrError выручает с сообщением об ошибке при конфликтеMergeStrategy.concat просто объединяет все подходящие файлы и включает результатMergeStrategy.filterDistinctLines также объединяет, но пропускает дубликаты по путиMergeStrategy.rename переименовывает файлы, происходящие из файлов jarMergeStrategy.discard просто отбрасывает соответствующие файлы

Исходя из этого, я настроил свой build.sbt следующим образом:

import sbt._
import Keys._
import sbtassembly.Plugin._
import AssemblyKeys._
name := "my-project"
version := "0.1"
scalaVersion := "2.9.2"
crossScalaVersions := Seq("2.9.1","2.9.2")

//assemblySettings
seq(assemblySettings: _*)

resolvers ++= Seq(
    "Typesafe Releases Repository" at "http://repo.typesafe.com/typesafe/releases/",
    "Typesafe Snapshots Repository" at "http://repo.typesafe.com/typesafe/snapshots/",
    "Sonatype Repository" at "http://oss.sonatype.org/content/repositories/releases/"
)

libraryDependencies ++= Seq(
    "org.scalatest" %% "scalatest" % "1.6.1" % "test",
    "org.clapper" %% "grizzled-slf4j" % "0.6.10",
    "org.scalaz" % "scalaz-core_2.9.2" % "7.0.0-M7",
    "net.databinder.dispatch" %% "dispatch-core" % "0.9.5"
)

scalacOptions += "-deprecation"
mainClass in assembly := Some("com.my.main.class")
test in assembly := {}
mergeStrategy in assembly := mergeStrategy.first

В последней строке build.sbt у меня есть:

mergeStrategy in assembly := mergeStrategy.first

Теперь, когда я запускаю SBT, я получаю следующую ошибку:

error: value first is not a member of sbt.SettingKey[String => sbtassembly.Plugin.MergeStrategy]
    mergeStrategy in assembly := mergeStrategy.first

Может кто-нибудь указать, что я могу делать здесь не так?

Спасибо

Ответы на вопрос(6)

Ваш ответ на вопрос