Исключить подкаталоги из пакета; Включить ресурс в файл BND

#gwt #osgi

#gwt #osgi

Вопрос:

Я пытаюсь поместить проект GWT Eclipse в файл Bundle-Jar. Для этого я должен добавить папку war в пакет. Проблема в том, что компилятор GWT добавляет все файлы *.class в папку war/WEB-INF/classes. BND пытается добавить все файлы * .class в файл jar, но они находятся по неправильному пути в проекте. Вот в чем проблема! Таким образом, я ищу правильный атрибут Include-Resource: в моем файле BND.

Есть ли у кого-нибудь идея, кто может исключить специальные файлы из выражения Include-Resource.

Это работает, если я каждый раз удаляю подпапку classes. Но через несколько секунд GWT SDK сгенерирует эти классы.

Большое спасибо

Себастьян

Ответ №1:

Пожалуйста, проверьте это: http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html#ApacheFelixMavenBundlePlugin(BND)-Instructions :

<Экспорт-пакета> … можно исключить пакеты, используя отрицание, начав шаблон пакета с ‘!’. Таким образом, неотрицаемые шаблоны указывают, какой из доступных пакетов следует включить в пакет, тогда как отрицаемые шаблоны указывают, какой из доступных пакетов не следует включать в пакет.

Вы также можете проверить этот проект: «http: //bitbucket.org/MikhailKotelnikov/projecttemplate «. Это шаблон для простого приложения OSGi / GWT. Здесь я выполняю компиляцию / упаковку всех классов, зависящих от GWT, как обычно, но я добавил следующие инструкции для инструмента BND:

 DynamicImport-Package: *
Import-Package: *;resolution:=optional 
  

В этом случае BND считает, что эти пакеты будут предоставлены средой OSGi во время выполнения, и она выполняет свою работу правильно.

Комментарии:

1. На самом деле я бы не рекомендовал использовать эти две инструкции. DynamicImport-Package фактически позволит вам использовать любой пакет, доступный в фреймворке, и это действительно то, что следует использовать только тогда, когда все другие методы дают сбой. Добавление разрешения необязательно к вашему импорту, не менее сложно, вот вы говорите: «Эй, я могу работать с этими пакетами или без них, мой пакет справится с этим», когда я подозреваю, что в вашем случае, если этот импорт фактически не может быть разрешен, код завершится ошибкой с исключениями класса not found.