5

我想了解像 Nexus 和 Artifactory 这样的工件存储库的索引是如何工作的。它提供什么好处?我的意思是——它有什么帮助,解决工件时使用的逻辑是什么?

我的理解是 Lucene 索引包含有关给定代理存储库或组中存在哪些工件的信息,一旦下载了这些索引,您可以轻松检查远程存储库是否包含您正在寻找的工件,您可以尝试从拥有它的存储库中解决它。这是唯一的用途吗?是否还查询索引以获取本地分辨率(因为每个存储库都有一个索引)......?这实际上是如何工作的?

4

3 回答 3

11

Artifactory 不使用索引进行搜索。我们相信索引已经成为过去,当时机器速度很慢,无法在服务器端处理大型搜索。这里只是搜索索引不好的部分列表:

  • 客户端在搜索前需要下载大文件
  • 索引更新太少,无法反映频繁的更改
  • 具有搜索索引的系统需要特殊的客户端来执行搜索
  • 客户端它与索引格式强耦合。

如今,当像 Artifactory 这样的服务器可以提供实时搜索时,通过 UI 向人类公开一个用于 IDE 等工具的 API,索引已经过时并且在 Artifactory 中仅支持与 m2eclipse 等工具兼容。

于 2013-06-10T10:27:57.373 回答
3

存储库索引是关于搜索的。Maven Eclipse 插件文档描述了功能:

维护一个服务器端索引使 Maven 客户端操作更加高效。服务器端存储库管理器可以使用索引来启用搜索接口和 REST API 来检索工件(Sonatype Nexus 不需要数据库)。

于 2013-06-09T17:18:52.953 回答
2

正如 Mark 已经说过的,Maven 索引完全是关于搜索(服务器端,搜索通过 UI 公开,或使用 REST)或客户端,例如 M2E 所做的(典型示例是 POM 编辑器中的代码完成,其中上下文提示使用索引例如,在添加依赖项的同时为您提供 Gs、As 和 Vs)。

Nexus 不使用索引来实现它的主要功能:提供工件和/或代理它们,而它确实在运行中维护索引。同样,索引不用于“解析”或任何其他方式,除了搜索 UI 和下游发布原因(对于像 M2E 这样的客户端)。

例如 Maven Indexer 的“客户端”用法,您可以在此处查看示例。

HTH,
~t~

于 2013-06-11T09:43:55.597 回答