При использовании дедуплицирующей стратегии я получаю сообщение об ошибке:
[error] deduplicate: different file contents found in the following:
[error] C:\Users\me\.ivy2\cache\org.neo4j\neo4j-kernel\jars\neo4j-kernel-3.2.3.jar:META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory
[error] C:\Users\me\.ivy2\cache\org.neo4j\neo4j-lucene-index\jars\neo4j-lucene-index-3.2.3.jar:META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory
[error] C:\Users\me\.ivy2\cache\org.neo4j\neo4j-udc\jars\neo4j-udc-3.2.3.jar:META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory
[error] C:\Users\me\.ivy2\cache\org.neo4j\neo4j-jmx\jars\neo4j-jmx-3.2.3.jar:META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory
Мне нужен второй файл в списке: neo4j-lucene-index\jars\neo4j-lucene-index-3.2.3.jar:META-INF/services/org.neo4j.kernel.extension.KernelExtensionFactory
, но в SBT-сборке нет MergeStrategy для второй, только «первая» и «последняя».
Вот стратегия слияния, которую я сейчас использую:
assemblyMergeStrategy in assembly := {
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("META-INF", "LICENSES.txt") => MergeStrategy.discard
case PathList("META-INF", "services", "org.neo4j.kernel.extension.KernelExtensionFactory") => MergeStrategy.first
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ps @ (x :: xs) if ps.last.endsWith(".sf") || ps.last.endsWith(".dsa") || ps.last.endsWith(".rsa") =>
MergeStrategy.discard
case x => MergeStrategy.deduplicate
}
case x => MergeStrategy.deduplicate
}
Как я могу создать собственную стратегию слияния для второй в списке или указать SBT включить определенный файл?