Какова связь между пакетом и версией пакета в OSGi?

В пакетах OSGi пакеты экспортируются и импортируются с номером версии. Тем не менее, для пакетов определена версия. Это кажется излишним для меня.

Какой смысл управлять версиями как пакета, так и пакетов, содержащихся в нем? Я понимаю, что комплекты / файлы могут быть версиями для использования в системах не-OSGi (например, для maven). Есть ли другая причина для этого?

Я немного запутался в этих двух уровнях управления версиями. Являются ли эти два номера версий зависимыми или независимыми от версий пакета, которые они содержат? Если зависит, каковы правила для версии пакета?

1 ответ

Решение

В OSGi пакеты определяют контракты, которые используются для совместной работы пакетов. Пакеты - это JAR-файлы, содержащие код.

  • Цель версии пакета - убедиться, что пакеты зависят только от контрактов, с которыми они совместимы. Пакеты используют семантическое управление версиями для обозначения незначительных, микро- и основных изменений. Пакет может экспортировать и импортировать любое количество пакетов и предоставляет и использует любое количество контрактов.
  • Назначение версии пакета состоит в том, чтобы иметь уникальный идентификатор для каждого JAR-файла, чтобы его можно было обрабатывать в течение жизненного цикла разработки. Код SHA также будет работать, но будет менее удобным. Некоторые организации повышают версию пакета на основе наибольшего изменения в любом из его пакетов. Т.е., если в его пакетах были только незначительные изменения, пакет будет подвергнут незначительным изменениям. Если бы в одном пакете было значительное изменение, пакет был бы сбит основным.
Другие вопросы по тегам