Убедитесь, что пакеты используют одинаковые версии зависимостей
Я ищу способ обеспечить, чтобы все функции, которые я развертываю в Karaf, требовали зависимостей одной и той же версии. Проект состоит из более чем 40 комплектов, что затрудняет проверку вручную.
Я подумываю о разработке подключаемого модуля Maven, который бы выполнял проверку, но прежде я хотел бы убедиться, что такого решения еще не существует.
2 ответа
Зачем тебе это делать? Каждый пакет должен зависеть от версий пакета, в котором он нуждается, и эта зависимость должна быть диапазоном. Так что если вы компилируете против и версию пакета API 1.0.0
, и вы являетесь потребителем этого API, то вы должны импортировать с диапазоном [1.0.0, 2.0.0)
, Обратитесь к спецификации OSGi Core Release 5, раздел 3.7.3 ("Семантическое управление версиями") для получения подробной информации.
Во время выполнения OSGi Framework гарантирует, что ваш пакет подключен к версии пакета, которая находится в пределах допустимого диапазона. Очевидно, что если у вас есть непересекающиеся диапазоны версий от разных импортеров, то Framework не сможет удовлетворить их одним экспортером.
Если вы хотите быть уверены, что используете те же версии, то создайте родительский проект и определите версии зависимостей только там. Таким образом, вы можете быть уверены, что все ваши модули имеют одинаковые зависимости. Конечно, это имеет смысл, только если все эти модули очень тесно связаны (например, принадлежат одному и тому же модулю приложения / выпуска).