我在sbt构建Scala项目(重复输入 :)时遇到问题,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
}
}
Run Code Online (Sandbox Code Playgroud)
我现在试图理解在上述情况下双冒号的含义。我在Quora中找到了答案,但这没有帮助。
而且,我是Scala的新手,但实际上并没有帮助。
编辑:
看到答案后,我仍然不明白为什么,因为我们正在创建列表,因此以下内容不起作用(重复的manifest.mf条目不会被丢弃):
case List("manifest.mf", "index.list", "dependencies") => MergeStrategy.discard
Run Code Online (Sandbox Code Playgroud)
以下内容也不会:(错误:)')' expected but '=>' found.:
case List("manifest.mf") | List(("index.list") | List("dependencies") => MergeStrategy.discard
Run Code Online (Sandbox Code Playgroud)
编辑2:
卸下额外的支架可完成以下工作:
case List("manifest.mf") | List("index.list") | List("dependencies") …Run Code Online (Sandbox Code Playgroud)