我正在与OSGi取得联系并尝试使用Apache Felix和Maven设置项目。我想使用多模块构建和声明式服务。该项目托管在GitHub上:osgi-maven-example(请注意,该链接指向一个具体的承诺,而不是仓库的负责人。)关于使用OSGi的Maven多模块项目设置的反馈
我已经得到关于该项目的总体设置了几个问题:
根据Neil Bartlett,
bnd-maven-plugin
应该优先用于Apache Felix Bnd插件,因为它尊重Maven的生命周期。从bnd-maven插件的时代来看,这似乎是一种相对较新的方法,因此我不确定这是否是一个好主意。我使用Apache Felix的声明性服务包(
org.apache.felix.scr.annotations
)来定义我的组件。这些注释被maven-scr-plugin
用于通过使用bnd.bnd
文件中的以下行来生成包含在MANIFEST.MF
中的服务描述符:Service-Component: OSGI-INF/*.xml
。这是声明式服务意图使用的方式吗?的IntelliJ显示在
GermanGreeter
-class警告:
究竟是什么意思?我需要关心这个吗?我该如何解决它?
虽然我在这个工作示例很高兴,我很好奇,如果我使用他们的预期的方式,所有这些技术,我会很感激,如果我能得到一些反馈的整体设置我之前开始在更大的项目中使用它。
感谢您对官方注释包的暗示。关于bnd插件:是不是完全相反?据我所知,bundle插件是否自己创建了一个jar实际上是jar插件的工作。 –
是的,maven-bundle-plugin定义了一个新的包装和一个新的生命周期,但这个包装并不是强制性的(参见'manifest'目标)。 bnd-maven-plugin使用更简单,因为它不会改变生命周期/包装,但它缺少其他的东西。例如它的配置不遵循“maven方式”(单点配置 - pom.xml),或者继承项目之间的配置(maven仓库中的共享bnd文件)。都有亲&con –
谢谢澄清! –