我在工作中的最新项目中使用 OSGi,它在模块化和功能方面非常漂亮。
但我对开发工作流程不满意。最终,我计划有 30-50 个独立的包,排列在一个依赖图中——据推测,这就是 OSGi 的设计目的。但是我想不出一个干净的方法来在编译 时管理依赖关系。
示例:您有包 A 和 B。B 依赖于 A 中定义的包。每个包都作为单独的 Java 项目开发。
为了编译 B,A 必须在 javac 类路径上。
你:
- 在 B 的构建脚本中引用项目 A 的文件系统位置?
- 构建 A 并将 jar 放入 B 的 lib 目录?
- 依靠 Eclipse 的“引用项目”功能,并始终使用 Eclipse 的类路径来构建(呃)
- 对所有项目使用一个通用的“lib”目录,并在编译后将 bundle jar 转储到那里?
- 设置捆绑存储库,从构建脚本中解析 list 并从存储库中提取所需的 bundle ?
没有。 5 听起来最干净,但也像很多开销。
最佳答案
我的公司有 100 多个捆绑项目,我们使用 Eclipse 来管理依赖项。但是,我不推荐使用“必需插件”方法来管理依赖项。您最好的选择是创建插件项目。仅从您希望可见的每个项目中导出包。然后在导入端执行以下操作:
打开 list 编辑器
转到依赖项选项卡在左下方是一个名为“依赖项的自动化管理”的部分
添加当前插件依赖的所有插件
编写代码后,您可以单击该选项卡上的“添加依赖项”链接以自动计算导入的包。
如果您从 Eclipse 运行,这会在您执行时自动为您完成。
这种方法的好处是您构建的包仅使用 OSGi 定义的包导入/导出机制,而不是来自 Eclipse 的机制。
如果您想了解更多信息,我建议您访问该站点并订购本书。太棒了。
关于java - 什么是合理的 OSGi 开发流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768903/