相关文章:
Maven本地库_remote.repositories文件
maven添加本地包命令mvn install:install-file
问题描述:在工作过程中,会遇到不能访问远程仓库,甚至是私服的情况,这时就会引发一些jar包依赖的问题,如果不能很好的解决,将会耗费大量的时间。
首先看一下本地仓库中某一个依赖的目录结构
首先新建一个pom文件,依赖如下
更新依赖,查看本币仓库对应路径下的jar包,如下图所示
可以看到有五个文件,如下:
重点说一下_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的作用,它记录了本地仓库中依赖的来源。
了解了以上的内容,就可以用来解决我们实际遇到的问题。
前提: 连不上外网,且连不上私服
问题:本地仓库中有相关的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>=
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文件拷贝出来。
执行以下命令:
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的,没找到命令):
因为查不到相关说明文档,以上内容均为推测。