3

我有一个大型的、不断增长的 OSGi 应用程序,其中包含许多捆绑包。我很想知道管理此类应用程序的最佳方法。目前,我正在使用 Eclipse 和 Maven,但尽管这对于构建捆绑包(通过 maven-bundle-plugin)非常有用,但到目前为止,管理整个应用程序并不容易。

我想做的是要么有一个运行配置,要么有一个可以启动的 pom.xml,然后构建和启动整个应用程序/项目。另外,我想要一些对调试有好处的东西。

我听说过 PAX Construct 并将它安装在 Eclipse 中,但到目前为止它没有什么帮助(也许我没有正确使用它)。

我确信有些人拥有正确管理的大型 OSGi 应用程序。任何可以分享的建议都会有很大帮助。

谢谢你,斯蒂芬

4

4 回答 4

1

通过Pax Runner可以进行运行配置。它允许您选择 OSGi 平台实现、指定配置文件(为某些角色预先打包的捆绑包集,例如weblogds等)并具有良好的供应支持,例如它可以从 Maven 存储库加载捆绑包。结果,您可以进行类似的运行配置

--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

如果您的应用程序非常大或者您有不同的应用程序,也可以创建自己的配置文件。

于 2009-08-05T20:31:42.730 回答
1

好...

这一切都取决于“管理”应用程序是什么意思。

对于开发时间的启动、构建和调试 - Eclipse IDE 应该完全符合要求。

Maven ......我不能说它,因为我自己从未使用过它。

我们有一个非常大的基于 Eclipse 的应用程序(实际上是几个),在开发方面,除了 Eclipse 之外,我们没有使用任何特殊的东西,它是集成的 SCM。

在cc build server中,我们也使用headless eclipse进行搭建和打包。

现在,工作空间的设置最近因所有依赖项和中间构建步骤而有些失控,因此我们正在研究Buckminster以管理目标平台和工作空间资源的实现。

如果这成功了,我们可能也会转向和 Bucky 一起建造——它看起来确实很有希望。

(我对 PAX 没有任何经验,但乍一看,它看起来也很有前途......)

于 2009-08-07T07:33:17.940 回答
0

我对 OSGi 很陌生,但是,

难道不能以这样一种方式使用 OBR 服务,即您将拥有一个需要捆绑包的 OBR 存储库文件,并让 OBR 服务找出依赖关系并为您填充 OSGIhost?

于 2009-08-07T07:11:13.180 回答
0

我认为目前这个领域的支持很差。OSGI 并没有真正定义任何关于部署或打包的内容,因此它取决于其他框架(例如 Eclipse)来提出他们自己的方式来做这件事。

如果您正在构建 RCP(Eclipse 基础)应用程序,那么 Eclipse 系统会完成所有这些工作,直至创建 exe 等。但是构建主要在 Eclipse 工作区上完成,无头构建更棘手。Tycho 项目试图通过加入 Maven 和 Eclipse 构建周期来使这更明智,但是它仍然专注于 RCP 应用程序而不是通用 OSGI。

如果你不做 RCP,这也是我的情况,那么你可能不得不推出自己的解决方案,因为我还没有找到任何通用的解决方案。以下是我们所做工作的概述:

我们定义了一个 POM 项目,其中列出了您的应用程序中包含的所有包。这个项目所做的只是列出引用——让我们称之为“捆绑列表”项目。

然后,我们使用 pax provision 以开发模式运行项目。这是通过将“bundle-list”pom 设置为 pax 项目的配置 pom 的父级来实现的(通常在“provision”文件夹中)。然后,当您启动 pax 时,它会使用该项目中的捆绑包列表来启动 OSGI。“bundle-list”项目中的捆绑包引用必须标记为“提供”范围才能工作。

然后,为了创建一个发行版,我们有另一个项目。该项目还具有“捆绑列表”项目作为其父项目。该项目使用各种插件来创建分发包,包括下载捆绑包 jar。该发行版包括启动 OSGI 的脚本,但这些是手写的,这里没有 pax 系统。

这很适合我们将包列表保存在一个地方,但是仍然有很多手写脚本,并且在两个系统之间共享配置存在问题 - 例如配置文件、包启动级别等。

于 2011-03-21T21:04:31.097 回答