2

我在使用 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 安装构建时,会生成 .jar 文件,但 OSGI-INF 文件夹不存在。我使用 Eclipse 和 m2e 插件。为什么 OSGI-INF 文件夹不在 .jar 文件中?

4

1 回答 1

2

所以如果你想使用 bnd 的内部注解框架,你不需要依赖 felix scr 插件。

    <dependency>
        <groupId>biz.aQute</groupId>
        <artifactId>bndlib</artifactId>
        <version>1.50.0</version>
    </dependency>

完成此操作后,您可以告诉 bnd 使用 maven-bundle-plugin 的此配置选项生成声明式服务 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>
于 2012-06-14T18:34:49.747 回答