我已经从http://mirrors.ibiblio.org/pub/mirrors/maven2/dot-index/nexus-maven-repository-index.gz下载了为Maven Central生成的索引
我想列出这些索引文件中的工件信息(例如groupId、artifactId、版本)。我读到有一个高级API。看来我必须使用下面的maven依赖项。但是,我不知道要使用什么入口点(哪个类?)以及如何使用它来访问这些文件:
<dependency>
<groupId>org.sonatype.nexus</groupId>
<artifactId>nexus-indexer</artifactId>
<version>3.0.4</version>
</dependency>
4条答案
按热度按时间pvcm50d11#
看一看https://github.com/cstamas/maven-indexer-examples项目。
简而言之:你不需要手动下载GZ/ZIP(新/旧格式),它会为你做索引器(此外,如果可能的话,它也会为你处理增量更新)。
GZ是“新”格式,独立于Lucene索引格式(因此,独立于Lucene版本),只包含数据,而ZIP是“旧”格式,实际上是普通的Lucene 2.4.x索引压缩。目前没有数据内容变化,但计划在未来进行。
正如我所说的,两者之间没有数据内容差异,但有些字段(如您所注意到的)是索引的,但不是存储在索引上,因此,如果您使用ZIP格式,您将使它们可搜索,但不可检索。
jfgube3f2#
https://github.com/cstamas/maven-indexer-examples已过时。并且构建失败(测试未通过)。
Nexus Indexer已经沿着发展,也包括了这些示例:https://github.com/apache/maven-indexer/tree/master/indexer-examples
这样就可以构建代码,并且代码可以正常工作。
如果你想自己卷,这里是一个简化的版本:
玛文:
java 语:
我们在Windup project - JBoss migration tool中使用此功能。
qaxu7uf23#
legacy zip index是一个简单的lucene索引,我可以用Luke打开它,并编写一些简单的lucene代码来转储感兴趣的头(在本例中为“u”)
范例输出...
可能有更好的方法来实现这一点虽然...
f4t66c6m4#
对于记录,现在有一个工具可以提取maven索引并将其导出为文本文件:Maven index exporter。它以Docker映像的形式提供,不需要任何代码。
它基本上是下载所有的.gz索引文件,使用maven-indexer cli提取索引,并使用clue将它们导出到一个文本文件。它已经在Maven Central上进行了测试,并可以在许多其他Maven repositories上工作。