欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

程序员文章站 2022-06-05 18:59:29
...

今填在工作中遇到了一个问题,弄了一下午才解决,现在记录一下!

问题是这样的,我用两个eclipse和两个maven的setting.xml文件

1)其中一个是自己的setting文件mat-settings.xml,可以访问外网

主要的信息如下图,其中mirror的id为nexus,后面会用到

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

2)另外一个为公司的setting文件yg-settings.xml,不可以访问外网

主要信息如下图,其中mirror的id为ygsoft-internal-repository,后面会用到

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

现在是怎么样一个情况呢?两个配置文件的路径都配置成了一个

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

这么做的原因是为了方便把所有的jar包都放到一个总路径下面!

好了,现在进入正题,来说遇到的问题!

现在项目中要用到x-pack的依赖,但是公司的私有仓库中是没有的,公司的私有仓库也不能访问外网,所以我先在一个配置了我自己的可以访问外网的setting文件的eclipse中去下载如下maven包

<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>x-pack-transport</artifactId>
			<version>5.1.2</version>
		</dependency>

下载完后的路径文件列表如下图,我们要注意_remote.repositories这个文件

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

现在已经存在jar包在路径下了,我去配置了公司不能访问外网的setting文件的eclipse中去配置maven依赖x-pack-transport,

这时候问题就出现了,明明文件夹下面已经存在了jar包,但是这个pom文件还是报错了

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

这个文件找不到,不会引入到项目中来,会报错!!!!!原因就在_remote.repositories这个文件

我们先来说一下_remote.repositories这个文件

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

第3行:pom文件>*仓库ID名称(也有可能是私服id的名称)

第4行:jar文件>*仓库ID名称(也有可能是私服id的名称)

从上面可以看到,elasticsearch-releases这个是elasticsearch*仓库的位置

这个文件存储的是每次从私服或者*仓库下载的jar包的信息。

而我公司的maven是无法访问到外网的*仓库的,而我公司的私有仓库中又没有这个包,所以就报错了!!!!!!!!!!!!

我们现在再看来一个其他的_remote.repositories这个文件,下面这个nexus就是我自己的私服的id的名称(上面可以看到,我自己的setting文件中的mirror的id为nexus

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

现在有两种方法解决:

方法一

找到出错的jar包文件位置,删掉_maven.repositories文件

(或用文本编辑器打开,将“>XX=”改为“>=”,即删除main,当然main也可能是其他值)

,然后update project。就这么简单,完美解决。具体是告诉这个jar包来自本地,自己打包上去的!

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

方法二(推荐)

很简单
在这个文件后面追加两行
***.pom>ygsoft-internal-repository=
***.jar>ygsoft-internal-repository=
这个yyy就是你当前setting里的mirror的id,告诉maven,这个jar是你亲生的,不要不认了。

Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录

 

相关标签: maven