使用Maven和OSGi实现快速周转

时间:2010-01-02 11:12:35

标签: maven-2 osgi maven

在开发多模块,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的应用程序时,您的开发周期如何?

2 个答案:

答案 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捆绑部署。