首页 > 代码库 > 解决nexus下载maven索引的问题

解决nexus下载maven索引的问题

解决nexus下载maven索引的问题

 (2011-10-12 17:48:46)
转载
标签: 

it

分类: java

转自

http://www.colorfuldays.org/program/fix_update_index_onnexus/
 
下载这个文件http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.zip真困难啊,本地幸亏有apache

在上个周五在公司的一台服务器上用nexus搭建了maven repository的镜像服务器。当时都安装好之后,将本地的settings.xml修改成使用该镜像服务器。这些配置都搞定后,测试时执行任何mvn任务时都存在问题。在管理界面搜寻了一通,没有找到原因,于是找来nexus的文章进行研究,顺便学习一下nexus。阅读过nexus的手册后,理解了nexus的管理仓库的方法,于是开始检查安装好的nexus的配置。经过一番排查,确认是由于下载central的索引出错,导致这个镜像服务器不可用。

分析日志,找到为什么每次下载时都存在问题,最终在log中发现在执行re-index操作时程序会通过httpclient请求http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.zip 文件时,无法下载到文件。在浏览器打开该url时,浏览器会自动跳转到另外一个镜像地址:http://mirrors.ibiblio.org/pub/mirrors/maven2/dot-index/nexus-maven-repository-index.zip。莫非是httpclient没办法处理http 301重定向的情况?如果真是这样的话,那说明nexus将会一直无法更新central 索引,这将是个严重的问题。

在不修改源码的情况下,我想到了一个解决这个问题的办法,操作如下:

1、根据错误的日志,将http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties 和 http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.zip 两个文件用浏览器下载到本地;

2、在本地机器上启动nginx,将这两个文件按照上面url的路径将文件存放好;

3、在安装nexus上,修改/etc/hosts文件,将repo1.maven.org的域名指向自己的机器。

4、重启nexus(不确认httpclient是否会在程序中做dns缓存,所以重启一下),重新在central repostory界面上执行update index的任务。

当update index的任务执行完成之后,查看browse index 的tab时就可以看到central的索引了。

===EOF===