Maven 本地仓库明明有jar包,但是pom文件还是报错的问题记录
今填在工作中遇到了一个问题,弄了一下午才解决,现在记录一下!
问题是这样的,我用两个eclipse和两个maven的setting.xml文件
1)其中一个是自己的setting文件mat-settings.xml,可以访问外网!
主要的信息如下图,其中mirror的id为nexus,后面会用到
2)另外一个为公司的setting文件yg-settings.xml,不可以访问外网!
主要信息如下图,其中mirror的id为ygsoft-internal-repository,后面会用到
现在是怎么样一个情况呢?两个配置文件的路径都配置成了一个
这么做的原因是为了方便把所有的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这个文件
现在已经存在jar包在路径下了,我去配置了公司不能访问外网的setting文件的eclipse中去配置maven依赖x-pack-transport,
这时候问题就出现了,明明文件夹下面已经存在了jar包,但是这个pom文件还是报错了
这个文件找不到,不会引入到项目中来,会报错!!!!!原因就在_remote.repositories这个文件
我们先来说一下_remote.repositories这个文件
第3行:pom文件>*仓库ID名称(也有可能是私服id的名称)
第4行:jar文件>*仓库ID名称(也有可能是私服id的名称)
从上面可以看到,elasticsearch-releases这个是elasticsearch*仓库的位置,
这个文件存储的是每次从私服或者*仓库下载的jar包的信息。
而我公司的maven是无法访问到外网的*仓库的,而我公司的私有仓库中又没有这个包,所以就报错了!!!!!!!!!!!!
我们现在再看来一个其他的_remote.repositories这个文件,下面这个nexus就是我自己的私服的id的名称(上面可以看到,我自己的setting文件中的mirror的id为nexus)
现在有两种方法解决:
方法一
找到出错的jar包文件位置,删掉_maven.repositories文件
(或用文本编辑器打开,将“>XX=”改为“>=”,即删除main,当然main也可能是其他值)
,然后update project。就这么简单,完美解决。具体是告诉这个jar包来自本地,自己打包上去的!
方法二(推荐)
很简单
在这个文件后面追加两行
***.pom>ygsoft-internal-repository=
***.jar>ygsoft-internal-repository=
这个yyy就是你当前setting里的mirror的id,告诉maven,这个jar是你亲生的,不要不认了。