3

在开发多模块、maven 构建的 OSGi 应用程序时,我正在寻找具有快速周转时间的开发模型。

实际上,最好的解决方案似乎是 Pax Construct 的 maven 插件(它又调用 Pax Runner)来配置 maven 生成的包。但是,在这个(或另一个)maven 插件的帮助下,我没有找到如何部署到正在运行的 OSGi 容器的方法。mvn pax:run总是重新启动 OSGi 平台。AFAIK 也无法部署到不由 Pax Runner 管理的现有 OSGi 容器(例如 Glassfish v3 或 SpringSource dm Server)。

是否存在允许将 maven 模块快速部署到正在运行的 OSGi 容器的 maven 插件,理想情况下能够挂钩到packaging生命周期阶段?

使用 maven 开发基于 OSGi 的应用程序时,您的开发周期如何?

4

2 回答 2

2

如果您使用的是 glassfish,您可以配置 maven 的 target/ 目录让 GlassFish 监视更新,然后 GlassFish 将在创建 jar 时自动安装并启动 jar,当 jar 被删除并更新捆绑包时,它将卸载它,当jar 在目标目录中更新。为此,创建一个名为

org.apache.felix.fileinstall-maven.cfg,内容如下:felix.fileinstall.dir=/path/to/target/felix.fileinstall.poll=5000 felix.fileinstall.bundles.new.start=true

将此文件放在 domain1/autodeploy/bundles/

如有其他问题,请发送邮件 glassfish 用户别名。萨虎

于 2010-01-04T06:07:00.523 回答
1

我不知道有任何通用插件可以做到这一点,但是使用 GlassFish,--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目标,允许:

在嵌入式服务器上执行指定的管理命令。例如,您可以创建一个 jdbc 资源。

该插件没有很好的文档记录,它的设置需要一些调查,我没有对此进行测试,但是,如果你可以传递--type osgiembedded-glassfish:admin目标(这是我的理解),那么应该可以在特定阶段绑定目标并且作为标准构建的一部分执行 OSGI 包部署。

于 2010-01-02T11:48:06.570 回答