Простой случай для меня: Я использую 2 очень популярных, но конфликтующих библиотеки scala: Spark SQL & JSON4s. Каждый из них зависит от разных версий парсера Jackson XML.JAR HELL в IDE (intelliJ), mvn-test и mvn-package: как унифицировать перемещение зависимостей во всех настройках?
Поскольку никто, кроме моей собственной программы, не использует JSON4s, простым решением является перенос пакетов org.json4s.jackson
и com.fasterxml.jackson
в новые местоположения.
Однако плагин maven-shade может делать это только в процессе упаковки, поскольку перед этим выполняются все тесты и IDE. Это все равно приводит к сбою всех тестов, независимо от того, должен ли выполняться тест mvn-test или scala в среде IDE.
Есть ли плагин, который может совместно управлять политиками переноса пакетов для всех трех случаев: JAR-упаковка/mvn-test/IDE-run? Я весь день искал Интернет и не нашел ответа.
Каковы различные версии Джексона? Вы можете переопределить одну из зависимостей в вашем собственном pom.xml, чтобы существовал только один экземпляр. –
Вы не поверите: 3.2.10 (Spark) vs 3.2.11 (Мой код). Если Spark jackson переопределен до 3.2.11, он имеет ошибку classNotFound, если я изменю свой jackson на 3.2.10 некоторые из моих тестов и перерывов в функциях. Итак, я сейчас в ситуации дилеммы – tribbloid
Я только полушутя, но использую OSGi для загрузки обеих версий ... –