2008-08-26 78 views
11

我们已经将OSGi运行时(Equinox)嵌入到自定义的客户端 - 服务器应用程序中,以促进插件的开发,并且迄今为止事情进展顺利。由于内置了清单编辑器,依赖关系管理和导出向导,我们一直在使用Eclipse构建插件。使用Eclipse来管理构建并不是非常有助于通过Hudson进行持续集成。如何管理OSGi构建依赖关系?

我们有OSGi包,它依赖于其他OSGi包。我真的讨厌在自定义ANT构建中硬编码构建顺序。我们已经完成了这个过去,这非常可怕。是否有任何构建工具可以轻松管理OSGi依赖关系,如果不能自动解决它们的话?有没有DECENT的例子说明如何做到这一点?

CLARIFICATION:

生成的构建脚本只能通过Eclipse使用。他们需要手动运行Eclipse的部分。我们还得到了Eclipse构建不会有的一些标准目标,我不想修改生成的文件,因为我可能会重新生成(我知道我可以做include,但我想避免Eclipse gen文件全部一起)

这里是我的项目布局:

/ 
-PluginA 
-PluginB 
-PluginC 
. 
. 
. 

在使用Eclipse的PDE,每个插件有一个清单,但没有build.xml作为PDE确实对我来说。很难自动化一个gui驱动的过程w/Hudson。我想设置我自己的build.xml来构建每个,但是存在依赖关系和构建顺序问题。这些问题由Manifest文件(描述OSGi导入)驱动。例如,PluginC取决于PluginB,它取决于PluginA。它们必须按照正确的顺序构建。我意识到我可以手动控制构建顺序,我正在寻找一种工具来帮助自动化构建顺序依赖项管理。

+0

为什么声明式服务不起作用? – drozzy 2010-10-12 14:32:46

回答

1

关闭了一些老问题...

我们的设置不利于Maven的,由于缺少网络连接和时机。我知道有一些离线的Maven设置,但是考虑到时间,这一切都太过分了。希望当我们有时间重新构建构建过程时,我们会使用适当的设置。

解决方案涉及Ant,BND和一些自定义ant任务。手动管理各种捆绑软件依赖性。我们已经在使用Ant; BND和自定义任务将它们结合在一起。自定义任务只是确保我们的bnd/eclipse项目同步。

2

我们使用Buckminster。它是一个构建和组装框架,它负责解决依赖关系,从各种存储库中获取,构建和打包产品。

这是一个Eclipse Tools项目。它与PDE很好地结合在一起。

这意味着我们用来构建RCP的所有元数据对于Buckminster解析和构建都是非常有用的。例如,feature.xml和Manifest.MF,.product中的Require-Bundle标头。

现在我们在每个包中都没有任何构建脚本;我们现在每个产品都有一个版本。 Buckminster照顾行走依赖关系图。

虽然他们(Buckminster团队)已经开始使用Hudson来承担项目本身,但我们花费了一点努力让现有的巡航控制/蚂蚁系统与之协同工作。我相信他们的构建设置也可以下载。

尽管它相对婴儿期,但我们对它印象深刻。

我们也研究了Pax-Construct但我们不想使用Maven。

我们目前正在寻找Spring DM testing framework来增强单元测试工作。

7

Maven2一路;有一个名为m2eclipse的Eclipse插件来帮助管理它,正确地解决了依赖性问题,然后解决了一些问题。有一个free online book as documentation

特别看multi-module projects将许多组件捆绑在一起,让Maven解决构建顺序和依赖关系问题。

还有一个chapter on the Eclipse integration

而这仅仅是Eclipse和Maven的,接下来你会得到一些很酷的东西OSGi的:

从根本上来说,Maven模块模型完全符合OSGi的捆绑模型。我们已经使用Maven构建并管理了数百个捆绑产品,并且已经使用了3年以上,这非常棒。

0

请您详细说明问题出在哪里?你提到OSGi包依赖关系。这是在运行时?或者在编译期间?在第一种情况下,您应该考虑声明式服务(请参阅OSGi规范)。

0

我们使用Hudson和PluginBuilder来构建基于Eclipse的OSGi捆绑包/插件。这基于Eclipse的标准PDE流程来构建插件。这意味着使用Eclipse作为编译器。

2

借调Maven2。查看Tycho插件的构建 - 他们使用Eclipse的JDT编译器,因此它在编译时实现所有OSGi规则,这与Eclipse在运行时的相同方式。

或者,Apache Felix BND插件也很流行。我更喜欢Tycho,因为它更接近于统一Maven和Eclipse开发环境。

1

PDE无头构建。 Eclipse有很好的文档。如果你正在构建Eclipse插件,并且你想通过命令行来完成,那么Eclipse PDE无头版本就是最好的选择。

0

的Maven不需要互联网连接!为了基督的缘故,使用-o开关。