Включить определенный файл в сборку SBT MergeStrategy - PullRequest
0 голосов
/ 30 октября 2018

При использовании дедуплицирующей стратегии я получаю сообщение об ошибке:

[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 включить определенный файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...