Я искал ответ на этот вопрос в течение нескольких дней и оказался пустым.
Я разрабатываю плагин Confluence, который интегрируется со сторонним приложением. У этого стороннего приложения есть хороший REST API, и они даже предоставляют Java SDK (ура!). За исключением..... Java SDK включает версию Jersey (1.18), которая конфликтует с разветвленной версией Confluence для Jersey (1.8-atlassian_15). SDK не был выпущен в виде JAR-файла Maven (или, по крайней мере, в него не включен pom.xml). В META-INF jar есть другие pom.xml для используемых им зависимостей, но сам SDK только что выпущен поставщиком как загрузка jar.
Итак, как я делал в прошлом, я mvn install:install-file
лох со своими собственными идентификаторами группы и артефакта, думая, что все будет в порядке. Intellij распознал библиотеку, все скомпилировалось хорошо, а затем я попробовал свой тестовый вызов REST API. Это когда он выдал ошибку, которая сделала очевидным конфликт между версиями.
ТАААК. Есть ли способ обойти это? Могу ли я «изолировать» банку SDK таким образом, чтобы код выполнялся в своей собственной сделке, не подвергаясь воздействию встроенной версии библиотек Confluence, которые использует SDK? У меня есть ощущение, что даже после того, как зависимость от Джерси будет разрешена (если это вообще возможно), будут другие проблемы .... SDK также связывает с ним конкретную версию Jackson, Swagger и т. Д.
Я попытался декомпилировать банку и включить декомпилированный код в свой проект, но у меня были все проблемы, с которыми я бы больше не хотел сталкиваться.
Я обратился к разработчикам SDK, чтобы узнать, могут ли они выпустить более удобный для maven выпуск, но я не надеюсь, что это вообще будет сделано, и даже это так, их цикл выпуска сильно отличается от моих собственных требований (читайте : Мне нужно решение сейчас). Это моя последняя попытка перед тем, как переписать REST-клиент с нуля.