管理/托管自己的p2存储库的工具?

时间:2010-12-03 11:13:41

标签: eclipse maven nexus p2 tycho

我们公司使用Maven。我们使用Nexus存储库管理器来存储我们的快照和版本。

目前,我们正在开发基于Eclipse的产品。我们使用Tycho来做到这一点。

问题如下:在我们基于Eclipse的产品中,我们有许多功能。我们的想法是分别构建每个功能(或功能组)并将它们放在内部p2存储库中。当一个功能需要另一个功能时,我们将目标平台指向必要的内部p2存储库。

目前,我们使用Tycho构建应用程序。我们使我们的功能“可部署”,因此Tycho在target中生成了一个P2站点。我们将P2站点推送到我们的服务器,然后运行Eclipse FeaturesAndBundlesPublisher,它将最近构建的功能与P2存储库合并。因此,我们有一个内部P2存储库,其中包含所有必需功能的版本。

我们发现这个过程太麻烦了。是否有像Nexus这样的工具,哪个更方便?

UPD :有discussion on Tycho Users list

2 个答案:

答案 0 :(得分:9)

使用Unzip Repository Nexus Plugin,您可以使用Nexus在Tycho构建之间交换二进制工件。

  • Tycho项目A发布其正常Maven项目的工件:项目使用mvn clean deploy构建,将项目的工件上传到Nexus上的deploy Maven 存储库。唯一的特殊要求是项目构建 p2 存储库。建议的方法是eclipse-repository模块,但在大多数情况下,“可部署功能”也应该有效。

  • 在您的Nexus上,您只需要以下一次性配置:对于部署Maven存储库(或包含该存储库的“存储库组”),您需要添加类型为“Unzip Repository”的虚拟存储库”。此虚拟存储库以解压缩的形式显示部署存储库中的zip工件。

    示例:如果项目A的p2存储库zip位于http://nexus.corp/nexus/repositories/build.milestones/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip的部署Maven存储库中,则它将在http://nexus.corp/nexus/repositories/build.milestones.unzip/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip-unzip/的解压缩存储库中以标准p2存储库格式提供。

  • Tycho项目B可以通过将后一个URL添加到其target platform来引用项目A中的工件,例如:在目标定义文件中。

在上面的示例中,项目B引用了项目A的发布版本。同样的方法也适用于快照,因为Unzip Repository支持"symbolic" versions,如1.1.0-SNAPSHOT支持最后部署的1.1。对于整体最高版本,0-SNAPSHOT甚至只是SNAPSHOT。然后,使用这些符号版本,项目B可以在其自己的CI构建中通过在其目标平台中添加生成的(稳定的!)p2存储库URL来引用CI构建结果项目A.

Disclaimer:Unzip Repository Nexus插件是Tycho项目的一部分,我是其中的一个提交者。

答案 1 :(得分:3)

也许这有点晚了,但我目前正在开发一个开源(EPL)存储库管理器,它支持使用maven和tycho部署到存储库的工作流程,并将其作为P2存储库使用。

也可以部署由maven创建的包(而不是maven tycho),P2元数据将自动生成。

该项目名为" Package Drone"和hosted on github。还有short introduction video