Ich versuche, ein Scala-Projekt in ein einsetzbares Fettglas mit sbt-assembly konvertieren. Wenn ich meine Montageaufgabe in sbt laufen erhalte ich folgende Fehlermeldung:Assembly-Merge-Strategie Probleme mit sbt-Assembly
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
Und von der SBT-Montagedokumentation:
If multiple files share the same relative path (e.g. a resource named application.conf in multiple dependency JARs), the default strategy is to verify that all candidates have the same contents and error out otherwise. This behavior can be configured on a per-path basis using either one of the following built-in strategies or writing a custom one:
MergeStrategy.deduplicate
is the default described aboveMergeStrategy.first
picks the first of the matching files in classpath orderMergeStrategy.last
picks the last oneMergeStrategy.singleOrError
bails out with an error message on conflictMergeStrategy.concat
simply concatenates all matching files and includes the resultMergeStrategy.filterDistinctLines
also concatenates, but leaves out duplicates along the wayMergeStrategy.rename
renames the files originating from jar filesMergeStrategy.discard
simply discards matching files
dieses ich mein Setup build.sbt gehen Sie wie folgt vor:
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
In der letzten Zeile des build.sbt, ich habe:
mergeStrategy in assembly := mergeStrategy.first
Jetzt
, wenn ich SBT laufen lasse, erhalte ich folgende Fehlermeldung:
error: value first is not a member of sbt.SettingKey[String => sbtassembly.Plugin.MergeStrategy]
mergeStrategy in assembly := mergeStrategy.first
Kann jemand darauf hinweisen, was ich hier falsch sein könnte tun?
Dank
Ohrfeigen mein Kopf. Das war so ein Versehen. Danke, dass du es aufgezeigt hast. –
nicht für mich arbeiten, heißt es: build.sbt: 27: Fehler: nicht gefunden: Wert mergeStrategy mergeStrategy in der Montage: = MergeStrategy.first ^ [Fehler] Typ Fehler in Ausdruck – stantonk
@stantonk: Können Sie um es zu lösen? – gjain