#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.