Nexus离线更新中央仓库索引

 
我们知道 Nexus 可以远程下载和缓存中央仓库索引,但是对于国内用户来说,Nexus 远程更新索引使用的站点位于国外且部分索引文件较大,经常会出现下载速度缓慢或索引文件不完整等情况。下面我们将介绍一种更加快捷可靠的索引更新方式:离线更新中央仓库索引。

离线更新中央仓库索引,顾名思义,就是直接将索引文件下载,然后拷贝至 Nexus 工作目录中,以达到离线更新索引的目的。

离线更新中央仓库索引主要分为以下 3 步:
  1. 文件下载
  2. 解压
  3. 更新并验证索引

文件下载

首先,我们需要下载以下 3 个文件:
  • nexus-maven-repository-index.gz 
  • nexus-maven-repository-index.properties 
  • indexer-cli-5.1.1.jar

1. 浏览器访问 https://repo.maven.apache.org/maven2/.index/ ,下载 nexus-maven-repository-index.gz 和 nexus-maven-repository-index.properties 两个文件(一般位于列表的末尾),如图 1 所示。

Nexus 中央仓库离线索引
 图1:Nexus 中央仓库离线索引下载列表
 
2. 浏览器访问 http://mvnrepository.com/,搜索 Indexer CLI,选择 Maven :: Indexer CLI,如图 2 所示。

索引生成器
图2:Nexus 索引生成器

3. 建议选择 5.1.1 版本,如图 3 所示。

Nexus indexer 5.1.1
图3:选择 Indexer CLI 版本

4. 在 Indexer CLI » 5.1.1 版本详情页,点击 View All,查看该版本包含的所有文件。

Nexus Indexer-cli 5.1.1 详情
图4:Nexus indexer-cli 5.1.1 详情

5. 在文件列表中,点击 indexer-cli-5.1.1.jar ,下载该文件,如图 5 所示。

indexer -cli 5.1.1 文件列表
图5:Nexus indexer-cli 文件列表

解压

1. 将 nexus-maven-repository-index.gz 、nexus-maven-repository-index.properties 以及 indexer-cli-5.1.1.jar 三个文件都存放到 index(目录的名称及位置均为自定义,没有特殊规定)目录下,如图 6 所示。

Nexus index 目录
图6:Nexus 中央仓库离线索引文件

2. 打开命令行窗口,跳转到 index 目录,执行以下命令,解压索引文件。
java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer

解压过程大约需要 10 分钟左右,请耐心等待,解压完成后,结果如图 7 所示。

图7:Nexus 中央仓库离线索引解压

3. 解压完成后,在 index 中会生成一个名为 indexer 的目录,该目录中存放的就是中央仓库离线索引文件,如图 8 所示。

Nexus  离线索引文件
图8:Nexus 离线索引文件

更新并验证索引

1. 将所有索引文件(不包含目录)全部拷贝到“Nexus\sonatype-work\nexus\indexer\central-ctx”目录中,如图 9 所示。

图9:Nexus 中央仓库索引目录

2. 重启 Nexus,在仓库列表中,选中 Central 代理仓库,然后点击 Browse Index 选项卡,结果如图 10 所示。 

nexus browes index
图10:Nexus 离线索引

3. 点击 browse Remote 选项卡,结果如图 11 所示。

nexus browse romote
图11:Nexus 远程索引

4. 对比 Browse Index 和 Browse Remote 中的索引,若两者完全一致,则表示离线索引更新成功。

需要注意的是,目前只有 Nexus 2.x 可以通过以上方式离线更新中央仓库索引,Nexus 3.x 暂不支持该功能。若想在 Nexus 3.x 中使用离线索引,我们建议您先在 Nexus 2.x 中离线更新索引后,再将数据迁移到 Nexus 3.x 中。