Прежде всего, я знаю, что было задано несколько вопросов об обертке существующих зависимостей Maven в виде пакетов OSGi, но у меня есть проблема, которую я не вижу непосредственно в одном из этих ответов ...Не удается запустить пакет обертки OSGi в Eclipse; .jar строится хорошо, но как я также копирую файлы в целевые/классы?
Банковский пакет для проблемного проекта фактически строится успешно, со всеми зависимостями и соответствующими метаданными, сгенерированными и скопированными в него. Непонятная проблема заключается в том, что каталог target/classes
остается пустым, кроме META-INF/MANIFEST.MF
, что означает, что запуск пакета в Equinox в составе конфигурации запуска OSGi из Eclipse не работает.
Я знаю, что сам .jar в target
построен правильно, так как после копирования его содержимого в target/classes
вручную я могу запустить его, и все работает так, как ожидалось.
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.4.0-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package></Export-Package>
<Private-Package>*</Private-Package>
<Require-Capability>osgi.extender; filter:="osgi.extender=osgi.serviceloader.registrar)"</Require-Capability>
<Provide-Capability>osgi.serviceloader; osgi.serviceloader=javax.script.ScriptEngineFactory</Provide-Capability>
<Import-Package></Import-Package>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Dependency>*;scope=runtime|compile;inline=true</Embed-Dependency>
<Service-Component>*</Service-Component>
<_dsannotations>*</_dsannotations>
</instructions>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
</configuration>
</plugin>
важные линии бытия, я полагаю:
<Embed-Transitive>true</Embed-Transitive>
<Embed-Dependency>*;scope=runtime|compile;inline=true</Embed-Dependency>
Кто-нибудь знает другого способа упаковки OSGi расслоения в проектах Maven таким образом, что все копируется в target/classes
, а также расслоения баночке? Или способ попросить конфигурацию запуска Eclipse искать сам .jar, а не искать в этом каталоге?
Мысль только что пришла в голову, что это может быть разрешено как хакерский пост-построенный шаг Maven для извлечения банки в target/classes
, хотя это явно далеко от идеала. Возможно, я мог бы использовать профили, чтобы ограничить его использованием Eclipse или чем-то еще, хотя мне не приходилось иметь дело с этим раньше, поэтому я не знаю ...
Заранее благодарим за любую помощь!