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

本文解决了一个Maven依赖问题,当公司的私有仓库缺少特定依赖且无法访问外网时,通过修改_remote.repositories文件来正确指向本地已有的jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

问题是这样的,我用两个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是你亲生的,不要不认了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值