如何在Eclipse非Maven OSGi运行配置中添加Maven Bundle
解决Eclipse非Maven OSGi运行配置自动加载Maven构建Bundle的方法
方案1:将Maven项目转为PDE可识别的插件项目(最推荐,支持代码热更新)
- 右键点击你的Maven Bundle项目,选择
Configure > Convert to Plug-in Projects,该操作不会修改原有Maven构建逻辑,仅补充Eclipse PDE(插件开发环境)识别项目所需的元数据,原有Maven打包、构建流程完全不受影响。 - 调整Maven Bundle插件的配置,让构建生成的
MANIFEST.MF同步输出到项目源目录,供PDE直接读取。在pom.xml的maven-bundle-plugin配置中添加如下参数:
<manifestLocation>${project.basedir}/src/main/resources/META-INF</manifestLocation>
- 执行一次
mvn compile生成最新的MANIFEST.MF文件后,刷新Eclipse项目,该Bundle就会自动出现在OSGi运行配置的Workspace Bundles列表中,直接勾选即可加入启动项,后续修改代码后无需手动拷贝,启动运行配置时会直接加载项目最新的编译产物。
方案2:将Maven构建输出目录加入目标平台(Target Platform)
- 打开Eclipse偏好设置,进入
Plug-in Development > Target Platform,选中当前使用的目标平台,点击Edit。 - 在Locations标签页点击
Add,选择Directory类型,下一步选中Maven项目的构建输出目录(通常为项目下的target文件夹,需确保该目录下存在构建生成的OSGi Bundle jar包或包含MANIFEST.MF的classes目录)。 - 保存目标平台配置后执行刷新,该Maven Bundle就会出现在运行配置的Target Platform分区Bundle列表中,勾选即可加入启动项。每次Maven构建更新产物后,只需在目标平台页面点击Refresh,即可加载最新版本的Bundle,无需手动拷贝到运行环境的plugins目录。
方案3:配置Maven自动同步构建产物到Equinox扫描目录
- 在Equinox运行环境目录下新建
dropins文件夹,Equinox启动时默认会自动扫描该目录下的所有合规OSGi Bundle并加载,无需额外修改启动参数。 - 在Maven项目的pom.xml中添加Maven复制插件配置,绑定到
package构建阶段,将构建生成的Bundle jar自动复制到上述dropins目录。配置完成后每次执行Maven构建时会自动完成产物同步,启动OSGi运行配置时会自动加载最新版本的Bundle,无需修改Eclipse运行配置的Bundle列表。
注意:如果使用方案1,建议在项目构建路径配置中排除
target目录的Bundle扫描,避免出现同Bundle重复注册的报错;每次修改MANIFEST相关配置后,先执行一次Maven compile生成最新的MANIFEST.MF再启动运行配置,避免元数据不一致导致的启动失败。
内容的提问来源于stack exchange,提问作者Quintonn
相关产品推荐
相关产品推荐

