解决Apache Archiva下载文件超时的问题

注意: Apache Archiva 2024-02 开始已经停止维护 建议使用 JFrog Artifactory 替代。

最近使用自己搭建的Apache Archiva来代理Maven仓库,经常发生失败的情况,观察Archiva的日志(logs/archiva.log),看到如下的内容:

明显是从https://repo.maven.apache.org/maven2这个地址下载数据的时候发生了异常。这个仓库的地址是Apache Archiva中的默认仓库地址。从目前的测试来看,这个地址在国内访问,经常出现问题。对于国内用户来说https://repo1.maven.org/maven2这个中央仓库的地址是相对来说更加稳定。因此只要在Remote Repositories中增加这个中央仓库地址即可。
如下图操作:

repositorylist

add_repository

另外,在添加完成后,顺便在属性中修改一下Download Timeout,从默认的60秒修改到600秒,减少超时的发生即可。

如上操作只能部分解决问题,在现实过程中,依旧会发生失败,失败主要集中在下载https://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz这个索引文件的时候,这个索引文件有300-400MB的样子,一次完整的下载基本上是都会失败,要命的是Apache Archiva在处理这个文件的时候,基本上没有进行任何容错处理。这个时候我们要么修改源代码来修正,要么需要辅助Apache Archiva完成这个文件的下载。

下面,我们实验通过Linux定时任务,nginxaria2来实现对Apache Archiva下载的辅助处理。

1.首先安装必须的软件

2.接下来,配置nginx

整个配置文件的原文如下:

修改后的结果如下:

接下来,重启nginx服务。

3.设置定时任务,定时检查远端服务器上的数据是否有更新

任务脚本内容如下:

默认我们把脚本执行路径为/data/nginx/mvn_index_corn.sh

设置定时任务的脚本如下:

执行上面的脚本。

4.设置Apache Archiva的代理服务器配置

发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注