【问题标题】:Quick Turnaround with Maven and OSGi使用 Maven 和 OSGi 快速周转
【发布时间】:2010-12-31 18:27:23
【问题描述】:

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

【问题讨论】:

  • 我没有资格回答有关 Maven 的问题。但我想有些人可能会觉得这篇文章很有趣:kent.spillner.org/blog/work/2009/11/14/java-build-tools.html
  • @Carl 看起来很有趣。有趣?我不知道:)
  • 我想象作者在咆哮时脸色发紫,我觉得这确实很有趣。虽然很多人(包括我自己,这是我喜欢它的另一个原因)讨厌 Maven,但我从未遇到过如此充满敌意和刻薄的东西。我很欣赏它的娱乐价值。

标签: maven-2 osgi maven


【解决方案1】:

如果你使用 glassfish,你可以配置 maven 的 target/ 目录让 GlassFish 监视更新,然后 GlassFish 会在创建 jar 时自动安装并启动 jar,当 jar 被删除时它会卸载它并更新bundle,当 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 用户别名发邮件。 萨胡

【讨论】:

    【解决方案2】:

    我不知道有任何通用插件可以做到这一点,但是使用 GlassFish,在调用 deploy 时使用 --type osgi 参数部署 OSGI 捆绑包:

    asadmin deploy --type osgi my-osgi-bundle-x.y.z.jar
    

    遗憾的是,我在maven-glassfish-plugin 中找不到对类型选项的任何支持。但是,maven-embedded-glassfish-plugin 确实有一个 embedded-glassfish:admin 目标,允许:

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 2014-12-01
      • 2015-10-06
      • 1970-01-01
      • 2013-02-10
      • 2012-11-22
      • 1970-01-01
      • 2012-09-26
      • 2012-03-19
      相关资源
      最近更新 更多