前言
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
需求背景
使用gitlab项目发布到服务器的时候都需要先进行编译,公司使用nexus作为maven管理。
问题发现
再服务器编译过程中,找不到jar包,先将几种解决方案记录。
方法一
在编译过程中,报如下错误,导致无法正常编译(大概意思就是没有找到这个jar包)。
[ERROR] Failed to execute goal on project xxx-project: Could not resolve dependencies
for project com.runwu.newpay:xxx-project:jar:1.0-SNAPSHOT: Failure to find
com.xxx:jar:2.0.8 in http://192.168.xx.xxx:8081/repository/maven-public/ was cached
in the local repository, resolution will not be reattempted until
the update interval of nexus has elapsed or updates are forced -> [Help 1]
然后我去nexus上找发现,真的没有,就手动把这个jar包上传上去,以为万事大吉时,结果还是报这个错,后面又在本地进行编译,发现没问题,后来百度看到一位老哥的文章,在maven编译时加入-U
mvn clean install -U
结果还真的可以。
-U 的解释如下:强制检查丢失的版本以及更新远程存储库上的快照
-U,--update-snapshots Forces a check for missing releases
and updated snapshots on remote repositories
方法二
如果上述方法还没有解决你的问题,可以看下本地maven仓库是否有对应的包,查看setting.xml
配置文件中,找到<localRepository>
标签所对应的本地仓库路径。
然后将你的Jar包放到对应的目录中,重新执行mvn clean install -U
命令即可。
方法三
如果你配置文件中使用的公共镜像,比如:aliyun镜像,但是本地maven仓库有了jar包,编译时仍然访问aliyun仓库导致报错。
你可以查看本地仓库的jar包目录中是否包含_remote.repositories
文件。
-
你可以删除这个文件。
-
或重新编辑此文件,如图。
- 重新执行
mvn clean install
命令。