maven-连不上远程仓库、私服,项目jar包处理

相关文章:
Maven本地库_remote.repositories文件
maven添加本地包命令mvn install:install-file
问题描述:在工作过程中,会遇到不能访问远程仓库,甚至是私服的情况,这时就会引发一些jar包依赖的问题,如果不能很好的解决,将会耗费大量的时间。

1、maven本地仓库目录结构及文件说明

首先看一下本地仓库中某一个依赖的目录结构
首先新建一个pom文件,依赖如下
maven-连不上远程仓库、私服,项目jar包处理_第1张图片
更新依赖,查看本币仓库对应路径下的jar包,如下图所示
maven-连不上远程仓库、私服,项目jar包处理_第2张图片
可以看到有五个文件,如下:

  • spring-boot-starter-data-redis-2.1.3.RELEASE.jar:依赖的jar包
  • spring-boot-starter-data-redis-2.1.3.RELEASE.pom:依赖的jar包的pom文件,因为我们依赖的jar包可能还依赖别的jar,所以maven还会根据这个pom文件去下载对应的jar包
  • spring-boot-starter-data-redis-2.1.3.RELEASE.jar.sha1、spring-boot-starter-data-redis-2.1.3.RELEASE.pom.sha1:校验文件
  • _remote.repositories:远程仓库

重点说一下_remote.repositories文件,打开查看文件中的内容,如下:

#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Apr 02 10:40:51 CST 2020
spring-boot-starter-data-redis-2.1.3.RELEASE.pom>nexus=
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>nexus=

从文件内容中可以看出第三行和第四行对应的是之前下载下来的两个文件,后面跟了>nexus=
nexus是我使用的maven的setting文件中设置的私服的名称,现在我不设置私服,改为从中央仓库下载看看_remote.repositories有什么变化

#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Apr 02 10:57:50 CST 2020
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>central=
spring-boot-starter-data-redis-2.1.3.RELEASE.pom>nexus=
spring-boot-starter-data-redis-2.1.3.RELEASE.pom>central=
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>nexus=

可以看到多出了第三行和第五行
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>central=、spring-boot-starter-data-redis-2.1.3.RELEASE.pom>central=跟之前不同的是,后面跟的是>central。
至此我们可以大概知道了_remote.repositories的作用,它记录了本地仓库中依赖的来源。

2、常遇到的问题与解决方法

了解了以上的内容,就可以用来解决我们实际遇到的问题。
前提: 连不上外网,且连不上私服
问题:本地仓库中有相关的jar包,但是编译时找不到对应的jar。而去配置的仓库中下载,而因为网络原因,导致下载失败。
1、查看本地仓库中对应jar包路径下,文件是否有缺失主要要有jar文件,pom文件和_remote.repositories文件。
2、查看_remote.repositories文件,查看其中的>和=之前的仓库名称和现在maven中配置的仓库名称是否一致,如果不一致会导致maven编译失败。即如果现在用的仓库id为test,那么只要在_remote.repositories中添加两行,maven就可以正确识别了

spring-boot-starter-data-redis-2.1.3.RELEASE.pom>test=
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>test=

注:>=之间什么都没有,即说明是自行install到本地仓库的,这时maven不会去远程仓库下下载。_remote.repositories文件中会有如下所示内容,同理上面添加的两行test可以用下面的两行代替:

spring-boot-starter-data-redis-2.1.3.RELEASE.pom>=
spring-boot-starter-data-redis-2.1.3.RELEASE.jar>=

3、手动安装jar包到本地仓库

mvn install:install-file -DgroupId=com.xinyartech -DartifactId=easyexcel -Dversion=1.1.1 -Dpackaging=jar -Dfile=/root/shell/easyexcel-1.1.1.jar
例:
把之前的spring-boot-starter-data-redis-2.1.3.RELEASE.仓库路径下的文件全部删除,删除之前把jar包和pom文件拷贝出来。
maven-连不上远程仓库、私服,项目jar包处理_第3张图片
执行以下命令:

install:install-file -DgroupId=org.springframework.boot -DartifactId=spring-boot-starter-data-redis -Dversion=2.1.3.RELEASE -Dpackaging=jar -Dfile=d:\spring-boot-starter-data-redis-2.1.3.RELEASE.jar

生成如下文件,同时外面一层多了一个maven-metadata-local.xml文件,最后还要把生成的pom文件替换成之前备份,的(应该能指定pom文件install的,没找到命令):
maven-连不上远程仓库、私服,项目jar包处理_第4张图片
maven-连不上远程仓库、私服,项目jar包处理_第5张图片

4、总结

因为查不到相关说明文档,以上内容均为推测。

  • 关于校验文件的用处没有找到,修改和删除了文件后都正常
  • 如果在去配置的仓库中下载jar包没下到,会生成.lastUpdate后缀的文件,可以删除

你可能感兴趣的:(maven)