什么是 p2 存储库?

What is a p2 repository?

我现在正在为一个项目工作几个月,我们使用 "p2-repositories"。我知道我从他们那里得到了我的依赖。但现在我想更深入地研究这个主题,我想知道 p2 存储库到底是什么 - 定义。

我认为它与 OSGi 和 Nexus 有关。但它从何而来?当我使用 p2 存储库时,我是否绑定到 Nexus?或者这是 OSGi 的通用标准?或者 Eclipse/Maven/Tycho?

当我可以拥有 Maven 时,为什么还需要 p2-repositories?或者为什么我不能使用 Maven?

P2 存储库在 eclipse 生态系统中非常常见。它们结合了工件(捆绑包)、元数据,还可以包含 eclipse 功能。

P2 仓库一般完全独立于maven 仓库和nexus。 Nexus 对 p2 功能有一些支持,这可能是您与它的联系。

在 OSGi 中提供部署的另一种方法是使用 Apache Karaf 功能。这些将要安装的捆绑包列为每个捆绑包的 urls。这样的url也可以是maven坐标的mvnurl。在这种情况下,功能和包都位于 maven 中。

第三种方法是使用 OSGi 包存储库。这是一个 OSGi 标准,用于 bndtools。他们只是托管元数据的索引和一个 url 到包。可以和maven集成。

不幸的是,这些部署方式是相互排斥的。因此,您最好使用最适合您开发平台的那个。因此,例如,如果几乎所有依赖项都来自 eclipse 项目,那么 p2 是自然的。