環境
- Windows10
- java version 1.8.0_171
- scala 2.12.3
- sbt 1.1.6
project\assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
project\plugins.sbt
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.7")
javax.mail を組み込むときにはまった。
"javax.mail" % "javax.mail-api" % "1.5.1",
"javax.mail" % "mail" % "1.5.0-b01",
sbt assembly で Merging エラー
sbt assembly
↓
[warn] Merging 'META-INF\NOTICE' with strategy 'rename'
対処法(build.sbtに以下を追記)
build.sbt
assemblyMergeStrategy in assembly := {
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".properties" => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".xml" => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".types" => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".class" => MergeStrategy.first
case "application.conf" => MergeStrategy.concat
case "unwanted.txt" =>
MergeStrategy.discard
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("META-INF", "mailcap.default") => MergeStrategy.discard
case PathList("META-INF", "mimetypes.default") => MergeStrategy.discard
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
補足
sbt0.13以前だと
build.sbt
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case x => MergeStrategy.first
}
}
で対処できた。
ちなみにsbtのバージョンは
sbt about
で確認できる。