在 Eclipse 中编译和运行 OSGI 应用程序

Posted

技术标签:

【中文标题】在 Eclipse 中编译和运行 OSGI 应用程序【英文标题】:Compiling and running an OSGI application in Eclipse 【发布时间】:2012-08-24 04:18:03 【问题描述】:

我们的企业应用程序的基础是 OSGI,我们有几个逻辑上是 OSGI 捆绑包的 Java 项目。我们使用 Maven 使用 Maven Bundle 插件来编译应用程序。但是这个过程非常耗时,并且无法调试应用程序。我们还使用 Runner 和 Pax(:provison) 插件来运行应用程序。如果我们可以依赖 Eclipse 的 Auto build 功能并调试应用程序,那将会使我们的生活变得更加轻松。有没有办法将 Eclipse 配置为能够编译(并且可以运行)基于 OSGI 的应用程序?

【问题讨论】:

【参考方案1】:

我不完全确定我是否理解你,但这里是。

嗯,在 Eclipse 中运行/调试 OSGi 应用程序真的很容易,只要您的包驻留在 PDE 感知项目中或至少在您的目标平台上。

您有所有捆绑包的来源吗?没有源代码的调试并不是那么有用。如果你这样做了,你能把你的包的所有源导入你的 Eclipse 工作区吗?

否则,您可以创建一个target platform,将所有捆绑包添加到其中。 (作为第一次尝试,我会说将所有包转储到一个目录中并将目标平台指向那里)

无论哪种方式,你都应该能够运行(或调试)-> OSGi 框架 -> 新建 -> 选择你的包 -> 开始

您可以从或目标平台以及您的工作区中选择捆绑包。

【讨论】:

哦,你确实需要一个带有 PDE 的 Eclipse 安装,忘了说。【参考方案2】:

对于构建,您可以使用Eclipse Plugin Development Environment (PDE)。尽管有它的名字,但它并不是专门用于构建 Eclipse 插件,并且可以用于处理纯 OSGi 包。 Eclipse 插件是带有一些附加功能的 OSGi 包。

虽然我知道一些面向企业的 OSGi 平台提供了对 PDE 的扩展,但在运行或调试部分方面无法为您提供帮助。

【讨论】:

【参考方案3】:

如果您已经在使用 maven 捆绑插件,您可能会发现 PDE 的清单优先方法不适合您现有的代码优先构建(我假设最后您想要一个 IDE 构建用于开发和调试,以及用于持续集成和自动化测试的命令行构建)。

你有两个选择。正如其他人所建议的,您可以使用 Eclipse 的集成 PDE,并将 Tycho 用于您的 maven 构建。第谷使用与 PDE 相同的数据,因此您不必多次写下内容。或者,您可以坚持使用 maven 捆绑插件并在 Eclipse 中使用 bndtools。与捆绑插件一样,bndtools 是代码优先的,因此您无需担心维护清单。但是,您可能会发现 bndtools 中的功能集不如 PDE 中的那么大,我建议您仍然手动检查您的清单以确保您了解正在生成的内容。无论您更喜欢清单优先还是代码优先,这是一场激烈的哲学辩论。

【讨论】:

【参考方案4】:

看看 bndtools。 bndtools 使用与 maven 捆绑插件底层相同的 bnd。您甚至可以将 bndtools 与 m2e 一起使用。 bndtools 可从 Eclipse 市场获得。

【讨论】:

以上是关于在 Eclipse 中编译和运行 OSGI 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

关于运行osgi插件时和运行环境相关的问题

实现类 Eclipse 的 OSGi 启动器

[转]Eclipse插件开发之基础篇 OSGi框架

如何管理 OSGi 构建依赖项?

在 Eclipse 中调试 FuseESB 应用程序

由于 icu4j,无法运行需要“org.eclipse.pde.core”的 OSGi 测试