进入新公司拉取git项目代码,公司使用maven来管理依赖,同事给我提供了setting-security.xml文件和setting.xml文件,
并且同事告知我 , 将setting-security.xml文放在C:\Users\Administrator\.m2文件夹下
将setting.xml替换为你自己maven conf文件夹内的
执行完上述操作后,我又做了其他的额外操作,如下
1.IDEA配置(这里没改,主要是确认下)
2.Maven环境变量:
未配置(这个在电脑上一直就没配过,maven这个东西不太需要这个)
3.MAVEN版本:
3.6.1
4.修改了同事提供的setting文件 , 只修改了localPepository标签, 改为自己本地的仓库路径,避免使用默认配置把依赖都下载到c盘
接着,我们刷新项目依赖
直接报错
上面的报错信息大概是说 ,在https:公司私库地址.com 中没有办法解析 org.springframework.cloud:spring-cloud-dependencies:pom:Hoxton.SR8 这个依赖 , 并且最后还报了一个Not authorized没有权限错误
这里分析一下这个错误出现的各种原因:
1.security秘钥文件位置配置错误,没有成功读取
2.setting文件内的server标签内的password值错误
3.公司私库确实没有springCloud SR8的依赖,并且我本地仓库也没有这个依赖,并且setting文件内指定的镜像没有地方能下载这个依赖
4.maven版本或环境变量问题
1.2暂时不好排查,选择直接对3进行修复.4作为备选方案
于是在setting文件补充配置阿里云镜像
再次刷新Maven,继续报错
注意了哈,报错信息虽然高度一致,但是引起报错的依赖却不一样,前者是spring原生依赖,后者这个是公司对spring依赖封装的一个内部依赖
这说明了配置阿里云镜像是有用的,但是公司内部的依赖依然无法拉取到本地仓库,不过依然没有解决本质问题;权限
接着,采用4解决方案修复,也就是重新下一个maven,保持和同事的3.8.4版本一致,并且配置环境变量
下载maven:maven的下载与安装教程(超详细)_maven安装-CSDN博客
下载完maven,配置完环境变量,修改idea配置后,再次刷新依赖
依然报错:
并且这次报错信息更长(这里可能是361和384版本的一个区别)
没办法,只能试试1和2解决方案了,开始问GPT setting-security.xml是什么东西 ?
这里问了2个问题(见红框)
图中有一些关键信息:主要就是让我用mvn命令 :
mvn --encrypt-password {你的自定义密码} 来生成一个新的子秘钥,并且将其配置在setting文件中,mvn在生成新的子秘钥时,会参考setting-security.xml文件
于是我们执行生成,并且替换原setting文件中的明文密码
再次刷新Maven,依旧报错,无法解决
ok 解决到这步,我个人已经完全没有办法了
主观上原因是因为对maven配置文件了解较少,不熟悉setting-security.xml的加密方式
客观上是因为 IDEA缓存
不过好在, 最后其他同事提供了新的setting文件给我,替换后解决,新的setting文件相较于刚开始给的那一版,最大的区别只有server标签内的password属性是否为密文密码
目前idea集成的maven已经可以正常拉取私库依赖
install deploy均可以使用
总结:
问题的出现和maven环境变量或版本无关,和私库密码权限有关,解决过程中受到idea缓存大量影响,包括后续复现问题时,同样的配置经常出现不同的结果
但核心问题就是setting文件中的这个
最后放出所有相关配置:
IDEA:
版本和环境变量
setting-security.xml
setting.xml
本地仓库内
默认仓库内