Tôi đang cố gắng chuyển đổi dự án scala thành lọ chứa chất béo có thể triển khai sử dụng sbt-assembly. Khi tôi chạy nhiệm vụ lắp ráp của tôi trong SBT Tôi nhận được lỗi sau:vấn đề lắp ráp-hợp nhất-chiến lược bằng cách sử dụng 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
Bây giờ từ tài liệu SBT-lắp ráp:
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
Đi theo thiết lập tôi này build.sbt của tôi như sau:
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
trong dòng cuối cùng của build.sbt, tôi có:
mergeStrategy in assembly := mergeStrategy.first
Bây giờ, khi tôi chạy SBT, tôi nhận được lỗi sau:
error: value first is not a member of sbt.SettingKey[String => sbtassembly.Plugin.MergeStrategy]
mergeStrategy in assembly := mergeStrategy.first
Ai đó có thể chỉ ra những gì tôi có thể làm sai ở đây?
Cảm ơn
Tát đầu tôi. Đó là một sự giám sát như vậy. Cảm ơn đã chỉ ra điều đó. –
không hoạt động đối với tôi, nó cho biết: build.sbt: 27: lỗi: không tìm thấy: giá trị mergeStrategy hợp nhấtChiến lược trong assembly: = MergeStrategy.first ^ [lỗi] Gõ lỗi trong biểu thức – stantonk
@stantonk: Bạn có thể để giải quyết nó? – gjain