2016-09-06 108 views
1

我在玩OSGi。据我所知,为了安装和启动一个包,你需要已经解决了它的依赖关系。由于手动安装其直接(和不正确)的依赖关系可能会很痛苦,因此已经引入了OBR。OBR服务器执行

我使用费利克斯为OSGi框架实现,我想通过OBR(即番石榴库)自动解决我的束dependencys。出于这个原因,我在客户端上使用了org.apache.felix.bundlerepository

我不确定在服务器端要做什么。我找不到关于该做什么的可靠信息。我确信Felix可以在服务器上轻松配置,以便作为“OBR服务器”,但我不知道该怎么做。 你能帮我吗?代码将不胜感激。如果您不能发布代码,至少可以告诉我为了成功设置资源库(例如felix框架或其他实现此功能的软件所需的bundle)而需要的常规步骤(或链接资源)。

我现在的设置:

  • 菲利克斯;
  • Eclipse霓虹灯;用于日食的Maven(1.7);

感谢所有的答复!

+0

你是什么意思的“在服务器端”?你想知道如何将捆绑包部署到OSGi实例,或者如何设置一个存储库,在解决像Maven存储库这样的依赖关系时可以从中获取捆绑包? –

+0

对不起,如果我不清楚。我想设置一个存储库,在那里我可以从OSGi实例中获取bundle来解决依赖关系。 – Koldar

回答

1

没有为Sonartype Nexus 2.13一个OBR插件,它允许您提供一个OBR兼容库。它也可以用来代理现有的Maven仓库。

然而,建立自己的仓库前,你可能也想看看bndtools及其解决方法的依赖。 Bndtools还允许您依靠现有的Maven仓库明确不支持OBR。有一个guide on how to work with Maven,这解释了他们的方法。

+0

我已经使用BND工具(特别是maven-bundle-plugin)在我的本地maven仓库中用我的开发包更新OBR仓库。但是第三方包(比如com.google.guava)呢?我会愚蠢地下载源代码(如果可用),创建一个maven项目并使用maven-bundle-plugin来更新OBR repository.xml文件。也许(可能)我错过了一些东西。有没有办法说“请在我的OBR存储库中添加以下软件包x.jar”。再次,抱歉,如果我的问题不清楚 – Koldar

0

Karaf Cave提供一个OSGi包存储库。

+0

它可以在felix上运行吗?我知道框架实现可能会定义特定于自己的配置(即felix.auto.deploy.dir) – Koldar

+0

它是一个bundle的集合,所以它肯定可以在felix上运行,但是您应该考虑在Karaf容器中使用它,会更容易配置,管理和运行。 –

1

一个OBR库的“服务器端”只是由一个索引文件又包含URL链接到束。你可以提供这个,不需要任何特殊的服务器软例如,Apache或Nginx HTTP服务器就足够了。

+0

我知道OBR只包含在一个XML文件中,而且我知道有一些工具(如BNDTools或maven-bundle-plugin),这些工具可以为正在开发的项目生成正确的xml文件。但是,假设你需要添加其他依赖项(如'guava'库):手动创建这样的xml将是愚蠢的。有没有一种工具可以帮助你自动为你添加数据?例如:“我想添加到我的OBR repo'com.google.guava:19.0'do'obr-add /home/koldar/com.google.guava.jar'。 – Koldar

+0

生成索引的工具称为bindex 。有很多方法可以使用它,大多数情况下,只要你的repo内容改变了,你就可以作为一个命令行工具来运行它。或者,有一种方法可以让文件在回购更改时自动生成索引,但这需要一些额外的服务器端的逻辑,也许你可以说你想以什么方式工作,我会告诉你是否以及如何完成。 –