【发布时间】:2019-09-14 21:49:46
【问题描述】:
我的 Scala 项目的 sbt 构建存在问题(重复条目: META-INF/MANIFEST.MF),以下行解决了问题:
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) => MergeStrategy.discard
case _ => MergeStrategy.last
}
}
我现在试图理解双冒号在上述上下文中的含义。我在Quora 找到了答案,但这并没有帮助。
此外,我是 Scala 的新手,这并没有真正的帮助。
编辑:
看到答案,我仍然不明白为什么因为我们正在创建一个列表,所以以下内容不起作用(重复的manifest.mf 条目不会被丢弃):
case List("manifest.mf", "index.list", "dependencies") => MergeStrategy.discard
但以下是:
case List("manifest.mf") | List("index.list") | List("dependencies") => MergeStrategy.discard
对于那些对该主题感兴趣的人...5 ways to create lists in Scala。
【问题讨论】:
-
因为你没有创建一个包含三个元素的列表(你还有一个额外的括号)。它使用 and or 将输入与三个不同的列表进行比较。
标签: scala collections functional-programming sbt sbt-assembly