java - 使用 Maven 构建 OSGI 声明式服务

标签 java service osgi

我在使用 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文件中?

最佳答案

所以如果你想使用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>

关于java - 使用 Maven 构建 OSGI 声明式服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038487/

相关文章:

java - Netbeans:包 com.mysql 不存在

linux - 在超过 StartLimitBurst 后启动 linux 服务的解决方法

java - 如何在 build.bnd 中定义具有可选分辨率的常见导入包

java - PAX-CDI : inter bundle producer methods

java - 如何在 JPQL 中引用仅为连接映射的列?

java - 动态 Web 项目创建中的 Eclipse 构建问题

android - 将值从 Activity 传递到广播接收器并从广播接收器启动服务

具有 singleTop 和前台服务的 Android 生命周期怪异?

maven - Maven构建的OSGi的问题,包括依赖项

java - 如何使用 iBatis-Spring 获取参数化查询