О какой версии идет речь? Если вы используете версию пакета в bnd с 1.2.3.XXXXX, то это версия пакета, которую вы получите при экспорте.
Однако по умолчанию bnd удаляет квалификатор при создании диапазона импорта на основе экспорта. Вы должны иметь возможность переопределить это с помощью политики версий. Значения по умолчанию:
-provider-policy = ${range;[==,=+)}
-consumer-policy = ${range;[==,=+)}
Вы можете легко изменить их, включив квалификатор.
Однако это было бы глобальным изменением, и я ожидаю, что вы пожалеете об этом.
Итак, другое решение - изменить импорт этого плохого пакета:
Import-Package org.myproject;version="${range;[====.=+);${@}}", *
Конечно, самое простое решение — покончить с этим и признать, что нанесение губной помады на свинью не делает ее семантически версионной. Просто отделите версию от ВАШЕГО пакета с помощью зависимости. В этих случаях я обычно выбираю странный старший номер, например. 100, чтобы было ясно, что моя версия НЕ является целевой версией.
Поскольку у меня остались неприятные воспоминания об этих проектах, я также могу посоветовать вам взглянуть на контракты OSGi. С контрактами вы не версионируете пакеты, но используете требование контракта.
И наконец, последний и, безусловно, лучший вопрос: действительно ли вам нужно, чтобы этот проект был версионирован? Я считаю, что в большинстве случаев более чем целесообразно разработать собственный OSGi API, отражающий мою потребность в этой внешней цели. Затем я могу оставить этот пакет красиво спрятанным в темном месте, где он, вероятно, должен пострадать из-за отсутствия семантической версии :-)
person
Peter Kriens
schedule
29.02.2016
1.0.2
, а затем авторыorg.myproject
внесут некоторые изменения в дополнение к тем, которые я уже включил, и назовут это1.0.2
, мы немного запутаемся, не так ли? Если я хочу обернуть их новую версию, какой версией я ее назову? - person Dan Gravell   schedule 19.02.2016bnd
илиbndtools
для создания операторов экспорта с ними? - person Dan Gravell   schedule 22.02.2016