在笔者开发项目的过程中,遇到了一个maven导不下来包的问题,并被困扰了很长时间,原因是maven的settings.xml设置出了一些问题。
今天来讲一下这个问题,来为大家避避坑。
settings.xml是用来配置和管理maven自身配置到的设置文件。一般每个公司都会有自己的settings.xml,这个文件可以直接找同事要一份。
笔者用IDEA开发项目,maven用了自己安装的maven,所开发的项目主要用到的项目依赖大多来自公司的私有仓库,settings就找同事要了一份,并放在了“user settings file”所示的路径下(D:\Users\admin\.m2\settings.xml)。
与此同时,笔者又配置了自己安装的maven中conf目录下的settings.xml,其路径为
(D:\packages\apache-maven-3.3.9\conf),在其中设置了阿里云的镜像。
在此之后,每当拉项目的时候,总是有包拉不到(这些拉不到的包都在公司的私仓),
并显示如下错误:
“Could not find artifact com.***:****n4j:pom:2.5.0 in nexus-aliyun”
从以上可得出结论:
maven使用的是maven所在目录D:\packages\apache-maven-3.3.9\conf下的settings.xml
而不是“user settings file”中所设置路径下的settings.xml(配置公司私仓的)。
注意:
所以大家在使用maven的时候,一定要注意这两个地方,原本以为(其实是听同事讲的)maven会直接使用user settings file中设置的settings.xml(不要听人瞎说就当真)。
自己也试验了以下,在 maven安装目录conf中没有settings.xml时,会使用user settings file中设置的settings.xml。
感觉“user settings file:”中设置的就是一个备用的settings.xml。
建议:
将maven安装目录conf中的settings.xml和user settings file中设置的settings.xml保持一致。
如下图所示,在IDEA中的settings(ctrl+Alt+s)中的maven设置页面,在Maven home path选项可以选择maven的类型,系统自带的或者是自己安装的,user settings file中设置settings.xml,local repository中设置本地仓库地址。