Уменьшите количество пакетов импорта в пакете OSGi.

Внутри пакета OSGi я пытаюсь удалить *;resolution=optional и указать конкретный импорт. Когда я проверяю во время выполнения, импорт выглядит следующим образом

org.apache.catalina.valves; version="8.0.20",
org.apache.catalina.util; version="8.0.20",
org.apache.catalina.session; version="8.0.20",
org.apache.catalina.realm; version="8.0.20",
org.apache.catalina.core; version="8.0.20",
org.apache.catalina.connector; version="8.0.20",
org.apache.catalina.authenticator; version="8.0.20",
org.apache.catalina; version="8.0.20",
org.apache.catalina.tribes; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.group; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.group.interceptors; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.io; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.tipis; version="0.0.0"version="0.0.0"<unwired><optional>

Могу ли я уменьшить это так?

<Import-Package>
    org.apache.catalina.*;version="8.0.20",
    org.apache.catalina.tribes.*;resolution:=optional,
</Import-Package>

Это хорошая практика?

Когда я создаю банку с более поздней конфигурацией, все еще в файле МАНИФЕСТА рядом с пакетами отображается разрешение = необязательно.

Отредактировано

Раздел зависимостей

<dependencies>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina-ha</artifactId>
            <version>8.0.20</version>
            <optional>true</optional>
        </dependency>
</dependencies>

person Thusitha Thilina Dayaratne    schedule 07.05.2015    source источник
comment
Мне не совсем понятно, что вы хотите сделать. Эти пакеты являются зависимостями кода внутри вашего пакета. Если вам не нужны зависимости, не используйте эти пакеты...   -  person Neil Bartlett    schedule 07.05.2015
comment
@NeilBartlett Я создаю пакет OSGi из упомянутой зависимости и экспортирую некоторые из его пакетов.   -  person Thusitha Thilina Dayaratne    schedule 07.05.2015
comment
Понятно... так в чем проблема?   -  person Neil Bartlett    schedule 07.05.2015
comment
После создания пакета при проверке МАНИФЕСТА он по-прежнему использует разрешение: = необязательно с версиями   -  person Thusitha Thilina Dayaratne    schedule 07.05.2015
comment
Правильно, это согласуется с фрагментом, который вы разместили в своих инструкциях maven.   -  person Neil Bartlett    schedule 07.05.2015


Ответы (1)


Вы не можете использовать * в манифесте, но вы можете использовать maven-bundle-plugin и в его конфигурациях * это возможно.

В maven-bundle-plugin вам обычно вообще не нужно указывать импорт вручную. Плагин сканирует используемые пакеты и настраивает операторы импорта пакетов, включая стандартные диапазоны версий. Если ваша зависимость maven является необязательной, она также будет использовать необязательный флаг.

person Christian Schneider    schedule 07.05.2015
comment
Я использую плагин maven-bundle. я отредактировал свой вопрос - person Thusitha Thilina Dayaratne; 07.05.2015
comment
Можете ли вы также показать соответствующие зависимости maven в вашем pom? - person Christian Schneider; 07.05.2015
comment
Попробуйте сделать вашу зависимость от maven необязательной. Не уверен, что это то, что вы хотите на стороне maven, но это может помочь для манифеста. - person Christian Schneider; 07.05.2015
comment
Да, тогда это работает. И кажется, что org.apache.catalina.*;version=8.0.20 имеет приоритет, и поэтому разрешение=необязательное в org.apache.catalina.tribes пропускается. Кажется, мне нужно определить пакеты один за другим - person Thusitha Thilina Dayaratne; 07.05.2015