40

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

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

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

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

我们发现这个过程太繁琐了。有没有像 Nexus 这样的工具,会更方便?

UPD .:关于第谷用户列表的讨论

4

2 回答 2

9

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

  • Tycho 项目 A 像普通 Maven 项目一样发布其工件:该项目是用 构建的mvn clean deploy,它将项目的工件上传到您在 Nexus 上部署的Maven存储库中。唯一的特殊要求是项目构建一个p2存储库。推荐的方法是eclipse-repository模块,但“可部署功能”在大多数情况下也应该可以工作。

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

    示例:如果项目 A 的 p2 存储库 zip 在部署 Maven 存储库中http://nexus.corp/nexus/repositories/build.milestones/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip,则它将以标准 p2 存储库格式在 Unzip 存储库中可用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/

  • Tycho 项目 B 可以通过将后者 URL 添加到其目标平台来引用来自项目 A 的工件,例如在目标定义文件中。

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

免责声明:Unzip Repository Nexus 插件是 Tycho 项目的一部分,我是该项目的提交者。

于 2012-11-13T17:16:48.583 回答
3

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

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

该项目名为“Package Drone”,托管在 github 上。还有一个简短的介绍视频

于 2014-12-30T14:20:24.137 回答