在开发多模块,maven构建的OSGi应用程序时,我正在寻找具有快速周转时间的开发模型。
实际上,最佳解决方案似乎是Pax Construct的maven插件(后者又调用Pax Runner)来配置maven生成的bundle。但是,在这个(或另一个)maven插件的帮助下,我找不到如何部署到运行OSGi容器的方法。 mvn pax:run
总是重新启动OSGi平台。 AFAIK也无法部署到现有的不受Pax Runner管理的OSGi容器(例如Glassfish v3或SpringSource dm Server)。
是否存在maven插件,允许将maven模块快速部署到正在运行的OSGi容器,理想情况下能够挂钩到packaging
生命周期阶段?
使用maven开发基于OSGi的应用程序时,您的开发周期如何?
答案 0 :(得分:2)
如果您正在使用glassfish,您可以配置要由GlassFish监视的maven的目标/目录以进行更新,然后GlassFish将自动安装&在创建jar时启动jar,当jar被删除时将卸载它并在目标目录中更新jar时更新bundle。要实现此目的,请创建一个名为
的文件org.apache.felix.fileinstall-maven.cfg,内容如下: felix.fileinstall.dir = /路径/到/目标/ felix.fileinstall.poll = 5000 felix.fileinstall.bundles.new.start =真
将此文件放在domain1 / autodeploy / bundles /
中有关更多问题,请使用mailfish用户别名。 Sahoo
答案 1 :(得分:1)
我不知道任何通用插件,但是,使用GlassFish,在调用deploy时使用--type osgi
参数部署OSGI包invovles:
asadmin deploy --type osgi my-osgi-bundle-x.y.z.jar
可悲的是,我找不到maven-glassfish-plugin中对type选项的任何支持。但是,maven-embedded-glassfish-plugin确实有embedded-glassfish:admin
目标,允许:
在嵌入式服务器上执行指定的admin命令。例如,您可以创建一个jdbc资源。
该插件没有详细记录,其设置需要一些调查,我没有测试这个,但是,如果你可以将--type osgi
传递到embedded-glassfish:admin
目标(这是我的理解),那么应该可以在特定阶段绑定目标,并作为标准构建的一部分执行OSGI捆绑部署。