У меня есть проект, который ссылается на ряд библиотек с открытым исходным кодом, некоторые новые, некоторые не такие новые. Тем не менее, все они стабильны, и я хочу придерживаться выбранных мной версий, пока у меня не будет времени перейти на более новые версии (вчера я протестировал hsqldb 2.0, и он содержит много изменений API).
Одна из библиотек, которую я хочу внедрить, — это Jasper Reports, но, как вы все наверняка знаете, она поставляется с горой поддерживающих jar-файлов, и мне нужно только подмножество горы (известной), поэтому я планирую собрать все на заказ. моих зависимых библиотек.
So:
Все ли делают свои собственные пакеты OSGi для библиотек с открытым исходным кодом, которые они используют, или существует главный источник OSGi-версий общих библиотек?
Кроме того, я подумал, что для каждого из моих пакетов было бы намного проще просто встроить свои зависимые банки в сам пакет. Это возможно? Если я решу встроить сторонние foc-библиотеки в пакет, я предполагаю, что мне нужно будет создать 2 файла jar, один без встроенных библиотек (для загрузки библиотек через путь к классам через стандартный загрузчик классов) и одну версию osgi, которая включает встроенная библиотека, поэтому я должен выбрать имя пакета, подобное этому ‹‹myprojectname››-‹‹subproject››-osgi-.1.0.0.jar ?
Если я не могу внедрить библиотеки с открытым исходным кодом и выберу пользовательский пакет библиотек с открытым исходным кодом (через bnd), должен ли я выбрать уникальное имя пакета, чтобы избежать конфликта с возможным официальным пакетом? например ‹‹myprojectname››-‹‹3rdpartylibname››-‹‹3rdpartylibversion››.jar ?
Мой проект, не поддерживающий OSGi, в настоящее время сканирует пользовательские плагины, сканируя папки META-INF в моих различных банках плагинов через Service.providers(...). Если я перейду на OSGi, этот механизм все еще будет работать?