nexus安装完成后,配置完代理仓库后出在$nexus_home/nexus/tmp目录下产生很多比较大的文件,等索引完成后,会将tmp中的内容移到$nexus_home/sonatype-work/nexus/indexer目录对应的仓库下---索引文件是以.cfs结尾的 。同时进度也可以在nexus的管理界面下的administrator下的scheduled tasks项下看下当前的进度 。

一个Nexus仓库是代理仓库(proxy repository),默认它不会有任何内容,只包含索引文件,只有在收到请求后(如来自Maven),它才会去远程仓库下载内容。之后你才能看到本地缓存的内容。好在我们有搜索功能,即使本地存储不包含缓存内容,只要远程仓库包含而且我们下载了索引,就能搜索的到。不同的仓库索引文件大也不一件,如我使用代理的oschina的maven仓库,索引文件大概有10G左右。所以如果有索引需要更新时,可以设置一个scheduled task任务,每天晚上的时候更新索引文件。

当在遇到无法使用外网时,可通过如下方法更新索引和对应的jar包到私有仓库:

一、更新索引

方法1:

1、首先在能连接远程仓库的机器上更新索引,建议使用eclipse maven插件,开启full Index,然后更新索引,需要等一段时间。

2、找到这个目录:本地repository\.cache\m2e\1.4.0\26522e0d83a422eed93329ece7565cfc(找时间最新的一个)\full里面有些这样的文件。

3、将该目录下所有文件拷贝到$nexus_home/sonatype-work/nexus/indexer/central-ctx我这里是选的是中央仓库,central-ctx。根据你的情况,把索引放入相应的文件夹即可。另外,拷贝之前清空central-ctx文件夹。

4、重启nexus

方法2:

1、在本地直接连接远程仓库,下载如下两个文件:

http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties

http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.gz

2、使用nginx或apache在其根目录下建立一个 /maven2/.index 的虚拟目录把上述两个文件拷贝至该目录下。修改hosts文件,将repo1.maven.org域名指向本机的IP。如:

127.0.0.1 repo1.maven.org

3、登陆Nexus, 在远程仓库上右键选择Update Index即可

4、移除之前在 hosts 文件中添加的内容。

方法3:

找台外网主机更新完索引后,直接打包取到内网主机上再启动也可以。

二、更新jar包

上面也提到,默认有索引可以通过browse index查看仓库内所具有的库文件,也支持本地检索,不过将本地maven中的仓库指定为刚刚搭建的nexus私服时,还是无法下载jar包的。而很多内外网隔离的企业,如果每个员工都去外网环境下更新jar包,显然浪费带宽而且速度也慢。我们可以通过如下操作来解决。

1、更新索引

2、使用本地maven,直接连接中央仓库,构建一次自己的项目,这时maven会自动下载所需要的jar。

3、把本地仓库拷贝到nexus的仓库中即可。位置:$nexus_home/sonatype-work/nexus/storage相应的库文件夹下即可。