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

发布于 2024-10-06 07:56:52 字数 730 浏览 11 评论 0原文

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

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

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

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

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

UPD.:有一个讨论第谷用户列表

Our company uses Maven. We use the Nexus repository manager in order to store our snapshots and releases.

Currently, we are developing a product based on Eclipse. We use Tycho to do that.

The problem is the following: In our Eclipse-based product we have many features. Our idea is build each feature (or group of features) separately and put them in internal p2 repositories. When one features requires another feature, we point the target platform to necessary internal p2 repository.

Currently, we build application with Tycho. We make our features "deployable", so Tycho produces a P2 site in target. We push that P2 site to our server and then run Eclipse FeaturesAndBundlesPublisher, which merges that recently-built feature with a P2 repository. As a result, we have a internal P2 repository having all the versions of required feature.

We find that this process is too cumbersome. Is there a tool like Nexus, which would be more convenient?

UPD.:There is a discussion on Tycho Users list

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

静待花开 2024-10-13 07:56:52

通过 解压缩存储库 Nexus 插件,您可以使用 Nexus 用于在第谷构建之间交换二进制工件。

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

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

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

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

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

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

With the Unzip Repository Nexus Plugin, you can use Nexus for exchanging binary artifacts between Tycho builds.

  • Tycho project A publishes its artifacts like a normal Maven project: The project is built with mvn clean deploy, which uploads the project's artifacts into your deploy Maven repository on the Nexus. The only special requirement is that the project builds a p2 repository. The recommended way to do this is an eclipse-repository module, but a "deployable feature" should also work in most cases.

  • On your Nexus, you only need the following one-time configuration: For the deploy Maven repository (or a "Repository Group" which includes that repository), you need to add a virtual repository of type "Unzip Repository". This virtual repository shows zip artifacts from the deploy repository in unpacked form.

    Example: If the p2 repository zip of project A is in the deploy Maven repository at http://nexus.corp/nexus/repositories/build.milestones/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip, it will be available in standard p2 repository format in the Unzip Repository at 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 project B can reference the artifacts from project A by adding the latter URL to its target platform, e.g. in a target definition file.

In the above example, project B references a release version of project A. The same approach also works for snapshots because the Unzip Repository has support for "symbolic" versions, like 1.1.0-SNAPSHOT for the last deployed 1.1.0-SNAPSHOT or even just SNAPSHOT for the overall highest version. Using these symbolic versions, Project B can then, for example in its own CI build, reference the CI build results project A by adding the resulting (stable!) p2 repository URLs in its target platform.

Disclaimer: The Unzip Repository Nexus Plugin is part of the Tycho project, of which I'm a committer.

春夜浅 2024-10-13 07:56:52

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

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

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

Maybe this is a bit late, but I am currently working on an open source (EPL) repository manager which supports the workflow of deploying to a repository with maven and tycho, and consuming it as P2 repository.

It is also possible to deploy bundles created by maven (not maven tycho) and the P2 metadata will be generated automatically.

The project is called "Package Drone" and hosted on github. There is also a short introduction video.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文