Maven私服问题汇总

  • Post author:
  • Post category:其他


最近正着手把公司内部的项目迁移到maven平台。需要搭建一个maven私服,选择的是Nexus(别和Google的Nexus手机混淆了)。至于为什么要搭建自己的maven私服,原因有三个:

  1. maven自己的中央库访问速度比较慢,伟大的墙再一闹腾,会时断时续。
  2. 有些jar包由于版权原因,maven中央仓库没有,比如oracle JDBC驱动。另外也会有一些项目中用到的比较老的开源jar包, 中央仓库也没用。这种情况我们需要把jar包手动上传到私服。
  3. 公司自己开发的jar包并不开源,不能上传到maven中央仓库,只能部署到私服上面。

至于如何安装Nexus Maven私服,网上有很多的教程,也非常的简单,我就不造重复的轮子了。下面主要就自己遇到的问题作一个汇总,以期能够帮后来者少走弯路。

私服的数据源

私服里面绝大多数的jar包都来自另外一个私服或者中央仓库。所以第一件事情是指定私服的数据来源。Nexus默认设置为Maven中央仓库,但Maven中央仓库实在是太慢,不考虑。国内稳定的maven镜像我了解的有两个,

http://maven.oschina.net/content/groups/public/



http://mirrors.ibiblio.org/maven2/

。两个和maven中央仓库都不可能完全一样,至少有一个时间的延迟,某些maven中央仓库有的最新版本jar包可能要过一定的时间它们才有。观察了一下,oschina更新频率更快一些,所以选择了oschina。一般无需太关心时延的问题,两个镜像绝大多数情况下都能满足需求。

设置步骤为, 先登陆,Repositories=>Central=>Configuration=>Remote Storage Location。请把Download Remote Indexes选择为True(默认为False),最后请一定记得点击Save按钮。

截屏如下:


如何处理下载失败

pom.xml经常就报找不到某某某jar包的错,很烦很头疼。一句话,这个是网络的问题,下载失败。正常情况下jar包存在于三个地方, Local仓库,Nexus私服仓库,镜像或者maven中央仓库。以所列出的顺序为准,搜索的过程由前往后,下载的过程由后往前。下载过程分两段,镜像或者maven中央仓库=>Nexus私服仓库,Nexus私服仓库=>Local仓库,两段都可能出问题。出问题也没事,重试就行了呗,但maven会在Local仓库中生成一份以lastUpdated结尾的破文件,一个错误的缓存(cache)。要能正确重试,只能手动删除缓存。

先判断是哪一段出错,选择Repositories=>Central=>Brower Storage,看一下对应的jar包在Nexus私服上面有没有,没有的话说明镜像或者maven中央仓库=>Nexus私服仓库下载失败,否则Nexus私服仓库=>Local仓库下载失败。

镜像或者maven中央仓库=>Nexus私服仓库下载失败处理方法

删除Local仓库的缓存。打开~/.m2/repository文件夹,删除报错jar包所在的文件夹(也可以只删除特定的子文件,提高效率)。删除Nexus私服仓库的缓存。Repositories=>Central=>Brower Storage,选择对应的目录树,右键先Expire Cache,后Delete。

截屏如下:


Nexus私服仓库=>Local仓库下载失败处理方法

这种情况简单很多,只要删除Local仓库的缓存即可。步骤如上。

结语

万事万物有优点,也必定有缺点,maven也一样。个人感觉maven有些过于复杂了,入门比较难,另外也不够健壮,经常需要花很多时间去和错误和warning作斗争,累。



版权声明:本文为kimylrong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。