Каков наилучший способ группировки пакетов OSGi для создания согласованного «приложения»?
«Способ OSGi» заключается в разработке отдельных пакетов, содержащих отдельные, согласованные элементы функциональности. Иногда эти пакеты содержат служебные классы, иногда они зависят от служебных классов и устанавливают свои собственные службы OSGi.
Пользователи, с другой стороны, вряд ли будут подвержены связкам. Они больше заботятся оapplicationчасть программного обеспечения, которая выполняет задачу или решает их проблему. Обычно приложение будет использовать несколько пакетов (скажем, импортированных через Import-Package) для выполнения своих задач.
What is the best way to formalise this relationship in the OSGi world? Одним из примеров требования будет что-то простое, например, показ номера текущей версииof the application (не пакет (ы)) для пользователя. Как будет обнаружен этот номер версии?
Eclipse имеет концепцию, называемую «особенности»; но это не стандарт OSGi.
Питер Криенс имеетнаписано о приложениях OSGi и его статья имеет смысл. Мой вывод был сделан из того, что приложение может отображаться в пакет; просто пакет каким-то образом использует другие пакеты. Но если создать пакет приложений с помощью Import-Package, я не вижу, как это может быть осуществимо с точки зрения разработки.
Один способ может состоять в том, чтобы иметь «пакет приложений»; он использует Require-Bundle и имеет свою собственную версию, но Require-Bundle недоволен в мире OSGi.
Использование Import-Package для импорта всех необходимых пакетов с требуемыми версиями, однако добавляетsignificant накладные расходы на обслуживание разработчика в той степени, в которой я не считаю это возможным. Каждый раз, когда производится наименьшее изменение, даже в пакете реализации, версия пакета должна обновляться, и затем зависимость от версии пакета обновляется в «комплекте приложений».