Jon*_*on7 15 java eclipse osgi maven-3 apache-karaf
我开发的产品由许多捆绑包组成,这些捆绑包作为karaf顶部的功能运行.通常,我们的开发人员一次只能处理一个捆绑包.我们的正常开发类似于:代码,编译,复制捆绑到部署文件夹,测试.我们还发现hotdeploy只是拒绝覆盖作为功能安装的某些bundle而不重启服务器或卸载/重新安装功能,因此有时循环时间更长.
我的问题是:社区中的任何人都有更好的方法吗?我们做事的方式很有效,但我觉得它很慢而且效率低下,而且我认为有人会想出更好的东西!
编辑:我意识到在我的问题中我很不清楚...我们在Karaf下使用Equinox.我们也使用Eclipse和Maven,虽然我不知道使用Maven是相关的.
听起来你想要dev:watch命令.从文档:
watch命令可用于帮助开发时间.它允许您配置一组将被监视的URL.与给定URL匹配的所有捆绑包位置将自动更新.这样就无需手动更新软件包,甚至可以根据需要将软件包复制到系统文件夹.请注意,只有基于maven的网址和maven快照才会自动更新,因此如果您运行
开发:观看*
它实际上将监视所有位置匹配mvn:*的包,其URL中包含"-SNAPSHOT".
从Karaf shell执行"dev:watch --help"将列出其可用的标志和args.
类似的东西是PAX插件
如果你有Eclipse的m2 maven插件,这些都可以很好地工作.
更新:在我的公司,我们努力成为TDD,因此在没有明确启动Karaf的情况下进行了大量的开发.在单元测试的正常组合中,我们也使用Pax Exam,即使从Eclipse中运行,它也非常棒!=)
这有助于确保我们不会因为使用Equinox/Felix/Concierge运行任何Karaf细节(因此我模拟了我们依赖的各种Karaf细节,如JAAS身份验证).除了许多其他很酷的工具/功能外,它还能够配置Karaf功能并使用TinyBundles,您甚至可以动态创建捆绑(再次用于模拟/存根).
Pax Exam通过提供JUnit @Runner挂钩到JUnit框架,最新版本(2)更快,并且具有基于DSL的API,因此测试非常简洁和可读.
使用Pax Exam为我们提供了良好的测试覆盖率和较短的开发时间.如果测试不太实际,或者我们正在寻找测试中没有出现的错误,那么dev:watch命令是非常宝贵的.
综上所述; IMO你肯定应该通过测试推动你的开发(Pax Exam将很好地插入你现有的构建中,一旦你习惯它,你会发现更快的开发).您可以立即开始使用dev:watch命令,它肯定会加快您当前的状况.
更新2:在回答另一个问题时,我添加了一个maven示例Pax-Exam测试ComponentFactory.测试驱动开发可以说是当今开发人员可以使用的最有效的工作流程.链接到问题:osgi:使用ServiceFactories?并链接到源代码:http://dl.dropbox.com/u/2465717/net.earcam.example.servicecomponent_2011-08-16_15-52.tgz