2013-10-02 116 views
0

稍微有些背景:我们正在使用Apache Felix实现OSGI来开发我们的Web开发工具(Adobe CQ5,其内部构建于Apache felix上)。我们有几个我们自己的捆绑包(大约10个),并且他们每个都被配置为一个项目。OSGI Apache felix-热部署支持

问题:在开发生命周期中,我们对bundle进行更改,然后使用ant脚本创建bundle并将其部署到felix中。我想知道是否有某种方法可以在开发模式下对我所做的更改进行热部署,从而节省开发人员的时间。

基于我的研究,我们可以使用felix文件安装,它将监视文件夹以更改任何包并自动部署它们。但这又意味着我需要运行ant脚本来构建jar文件并将其移动到文件安装正在监视的自动部署文件夹中。有没有更好的/快速的方法来实现这一目标?该脚本目前需要大约10秒(大约)来编译类,创建osgi特定的元数据文件,将类+元数据捆绑到新的jar中。有没有办法进行热部署,以便我对java文件所做的任何更改都会自动反映到该包中?

非常感谢

回答

1

如果开发Bndtools您的项目,从内置的启动运行,那么Bndtools将处理立即建立您更改任何Java代码和部署更新的捆绑包到运行时。这导致非常快速的代码/测试/调试/修复周期。

话虽如此,我很惊讶,它需要10秒来编译和建立你的包目前!你在建造一台非常古老的电脑吗?还是几千兆字节的数据包?

+0

我会看看bndtools和评论。计算机是相当现代的,并且在最大(〜5 MB)时,包的大小是几兆字节。可能是构建脚本需要少1或2秒。不知道为什么。 – Jai

+0

嗨尼尔,非常感谢指点bndtools。我想这对我的要求是理想的。但是,我无法安装插件。我收到一条错误消息:“无法读取存储库http://bndtools-updates.s3.amazonaws.com/plugin/biz.aQute.bndlib_2.1.0.20130426-122213.jar。Read readd out”。这可以帮助你做些什么吗?非常感谢。 – Jai

1

我们尝试过DCEVM,它几乎可以完成所有我们期望减少开发+修复+测试生命周期的任何事情。我向所有使用大型Web应用程序的Java开发人员推荐。感谢您对bndtools Neil的建议。