Во-первых, у вас должно быть все ваше приложение в рамках OSGi. Однако я не думаю, что было бы сложно настроить его так, чтобы вам приходилось работать только с несколькими пакетами (возможно, только двумя, в зависимости от вашей настройки.
Путь с наименьшим количеством проблем, которые я вижу, состоит в том, чтобы взять фреймворк и "обернуть" его и все его зависимости в один пакет. Сделайте пакеты для зависимостей приватными. Для вашего основного проекта сделайте то же самое.
Другой путь - упаковывать все библиотеки отдельно, используя соответствующие команды переноса. Это имеет значительно больше потенциальных проблем, если вы не заинтересованы в полной версии OSGi.
В зависимости от настроек вашей сборки, я бы начал с рассмотрения maven-bundle-plugin и / или Bnd . Плагин maven-dependency делает это довольно легко, так как все, что вам нужно сделать, это сказать ему, какие идентификаторы артефактов для встраивания, и он это сделает. Вам необходимо убедиться, что вы указали все встроенные jar-пакеты как частные пакеты.
Это должно работать, если среда не выполняет загрузку классов / AOP, что значительно усложнит OSGify.
Наконец, если вы заинтересованы в быстром non-osgi решении, создайте фреймворк с помощью maven-shade-plugin и просто переименуйте все пакеты для конфликтующих библиотек. , Это, вероятно, будет самым простым, поскольку вы просто перепакуете фреймворк с затененными библиотеками один раз, а затем будете использовать это как свою зависимость.