Простой случай для меня: я использую 2 очень популярные, но конфликтующие библиотеки scala: Spark SQL и JSON4s. Каждый зависит от разных версий синтаксического анализатора XML Jackson.
Поскольку никто, кроме моей собственной программы, не использует JSON4, простое решение — перенести пакеты org.json4s.jackson
и com.fasterxml.jackson
в новые места.
Однако плагин maven-shade может делать это только в процессе упаковки, так как все тесты и запуски IDE происходят до этого. Это по-прежнему приводит к сбою всех тестов, независимо от того, запускать ли их в mvn-test или в тесте scala в среде IDE.
Есть ли подключаемый модуль, который может коллективно управлять политиками перемещения пакетов для всех трех случаев: JAR-packaging/mvn-test/IDE-run? Целый день копаюсь в интернете и не могу найти ответа.