我们的企业应用程序的基础是 OSGI,我们有几个逻辑上是 OSGI 包的 Java 项目。我们使用 Maven 使用 Maven Bundle 插件来编译应用程序。但是这个过程非常耗时,并且无法调试应用程序。我们还使用 Runner 和 Pax(:provison) 插件来运行应用程序。如果我们可以依赖 Eclipse 的 Auto build 功能并调试应用程序,那将会使我们的生活变得更加轻松。有没有办法将 Eclipse 配置为能够编译(并且可以运行)基于 OSGI 的应用程序?
4 回答
我不完全确定我是否理解你,但这里是。
好吧,在 Eclipse 中运行/调试 OSGi 应用程序真的很容易,只要您的包驻留在 PDE 感知项目中或至少在您的目标平台上。
你有所有捆绑包的来源吗?没有源代码的调试并不是那么有用。如果你这样做了,你能把你的包的所有源代码导入你的 Eclipse 工作区吗?
否则,您可以创建一个目标平台,将所有捆绑包添加到该平台。(作为第一次尝试,我会说将所有捆绑包转储到一个目录中并将目标平台指向那里)
无论哪种方式,您都应该能够运行(或调试)-> OSGi 框架-> 新建-> 选择您的捆绑包-> 开始
您既可以从或目标平台以及您的工作区中选择捆绑包。
对于构建,您可以使用Eclipse 插件开发环境 (PDE)。尽管有它的名字,但它并不是专门用于构建 Eclipse 插件,并且可以用于处理纯 OSGi 包。Eclipse 插件是带有一些附加功能的 OSGi 包。
尽管我知道一些面向企业的 OSGi 平台提供了 PDE 的扩展,但无法帮助您处理运行或调试部分。
如果您已经在使用 maven 捆绑插件,您可能会发现 PDE 的清单优先方法不适合您现有的代码优先构建(我假设最后您需要一个用于开发和调试的 IDE 构建,以及用于持续集成和自动化测试的命令行构建)。
你有两个选择。正如其他人所建议的,您可以使用 Eclipse 的集成 PDE,并将 Tycho 用于您的 maven 构建。第谷使用与 PDE 相同的数据,因此您不必多次写下内容。或者,您可以坚持使用 maven 捆绑插件并在 Eclipse 中使用 bndtools。与捆绑插件一样,bndtools 是代码优先的,因此您无需担心维护清单。但是,您可能会发现 bndtools 中的功能集不如 PDE 中的那么大,我建议您仍然手动检查您的清单以确保您了解正在生成的内容。无论您更喜欢清单优先还是代码优先,这是一场激烈的哲学辩论。
看看 bndtools。bndtools 使用与 maven bundle 插件相同的 bnd。您甚至可以将 bndtools 与 m2e 一起使用。bndtools 可从 Eclipse 市场获得。