Maven私服问题汇总

最近正着手把公司内部的项目迁移到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仓库的缓存即可。步骤如上。

以上是前辈总结的,具体的分享链接现在无法找到,现在我要补充几点:

       实际运用过程中,多多少少都会发生这样那样的错误,下面笔者就列举一些比较常见的错误。

1、能够上传自己的工程jar包到私服,但是下载的时候总提示错误

      首先我们要清楚maven构建依赖jar包的顺序: 本地库---》私服(如配置的repository)----》mirror(匹配的central)----》代理的中央仓库

      笔者列举几种解决方法的可能

      1、如果表面上看工程项目jar包上传成功,可以到私服nexus查看到上传的包,但是这只是表面上的无法让人信服

       此时,你会发现你到其他项目想要引用这个包的时候总是提示这个包找不到,你去本地仓库找的时候,发现你压根就没有下下来,基本上就两个后缀 .lastupdate的文件,这说明你下载不成功导致,根据上面提示的内容,可能出错就在 私服---》到本地这一块出错,你可以把本地和私服上的jar都删掉,私服删除和上面介绍的方法一样,本地直接把相应的目录删除即可,重新上传工程jar包文件,初步分析可能是当时上传jar并没有成功所致,所以笔者一开始就说只是表面上传成功!

      2、第二种可能的原因是,由于笔者配了mirror镜像,镜像映射的是私服的public库组,如

<mirror>
        <id>oschina-repo</id>
        <name>开源中国镜像</name>
        <mirrorOf>central</mirrorOf>
        <url>http://192.168.5.72:8081/nexus/content/groups/public/</url>
    </mirror>

可能是因为你当时由于网速慢,在下载中央远程仓库是的索引时没有下载完全,如果此时你去访问私服的时候,而私服会去检索索引文件,此时系统会不让你访问索引文件,所以读取出来的信息可能就会出错

 3、可能你的网速有问题,在上传和下载的时候会导致你的jar包发生错误,届时需要你检查下你的网速问题

以上即是笔者在搭建私服和运用私服时候碰到的问题及解决方法,如果有读者碰到了其他的问题请把相应的解决方法放置在评论分享,大家一起学习进步!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值