Maven工件存储库的索引如何工作

car*_*ing 5 nexus artifactory maven maven-indexer

我想了解Nexus和Artifactory等工件存储库的索引是如何工作的.它提供了什么好处?我的意思是 - 它如何帮助解决工件时使用的逻辑是什么?

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

JBa*_*uch 10

Artifactory不使用索引进行搜索.我们相信索引已成为过去,当机器速度很慢且无法处理服务器端的大型搜索时.以下是搜索索引不良的部分原因:

  • 客户需要在搜索之前下载大文件
  • 索引更新太少,无法反映频繁的更改
  • 具有搜索索引的系统需要特殊客户端才能执行搜索
  • 客户端很难与索引格式相结合.

现在,当像Artifactory这样的服务器可以提供实时搜索,通过UI为人类公开IDE等工具的API时,索引已经过时,并且只有与m2eclipse等工具的兼容性才能支持Artifactory.

  • 好吧,RPM有一个借口 - 这是一项旧技术,当计算机速度很慢而且无法通过服务器端搜索进行扩展时.但是现在呢?我的智能手机可以运行ElasticSearch服务器! (2认同)

Tam*_*nak 2

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

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

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

呵呵,
~t~