使用Maven构建我的OSGI服务时遇到问题。我的pom.xml
:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.0.1</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
<Service-Component>OSGI-INF/activator.xml</Service-Component>
<Import-Package>org.osgi.framework</Import-Package>
</instructions>
</configuration>
</plugin>
当我使用 Maven install 构建时,会生成.jar文件,但OSGI-INF文件夹不存在。我使用Eclipse和m2e插件。为什么OSGI-INF文件夹不在.jar文件中?
答案 0 :(得分:2)
因此,如果您想使用bnd的内部注释框架,则不需要依赖felix scr插件。
<dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
<version>1.50.0</version>
</dependency>
一旦你这样做,你可以告诉bnd使用maven-bundle-plugin的配置选项生成Declarative services xml:
<Service-Component>*</Service-Component>
这将为您生成OSG-INF的内容。注释略有不同,这里记录了它们:http://www.aqute.biz/Bnd/Components
另外,你的导入看起来非常时髦,我建议你这样做:
<instructions>
<Export-Package>{local-packages};version="${project.version}"</Export-Package>
<Import-Package>*</Import-Package>
<Private-Package>{local-packages}</Private-Package>
<Service-Component>*</Service-Component>
</instructions>