项目中我们需要依赖许多包,那么就涉及到maven配置文件,我们需要配置settings.xml文件,这里面会配置我们的本地仓库localRepository ,远程仓库:仓库会有我们的依赖仓库repository和插件依赖仓库pluginRepository, mirror镜像仓库
依赖路径:工程优先去本地仓库找依赖—》 没找到就到配置文件中的mirror镜像仓库–》然后再依次去找repository、pluginRepository依赖
<localRepository> localRepository>
servers标签是一个大标签,主要作用于上传操作,保存仓库用户 和 仓库密码的地方
server标签在 servers内,每个server标签表示一个仓库用户,servers标签可以包含多个server标签
<servers>
<server>
<id>nexus-snapshotid>
<username>zfl789username>
<password>WmZsMTgyNzY3MzUxNjEhIQpassword>
server>
<server>
<id>nexus-releaseid>
<username>zfl789username>
<password>WmZsMTgyNzY3MzUxNjEhIQpassword>
server>
servers>
mirrors标签用于配置镜像仓库,以提高Maven构建的速度和稳定性
注: mirrors标签和repositories、pluginRepositories标签,都是配置远程仓库的标签。但是作用不一样。maven去远程仓库寻找的时候,优先寻找 mirrors标签下的远程仓库,其次才是另外两个
mirror标签在 mirrors标签内,mirrors标签可以包含多个mirror标签,但一般建议只配置一个
mirrorOf标签表示要替换的远程仓库的ID集合
(远程仓库的ID指的是,repository标签【或者pluginRepository标签】下的id标签内的值)
<mirrors>
<mirror>
<id>centralid>
<mirrorOf>
central
mirrorOf>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/maven-central-repo/url>
mirror>
mirrors>
mirrorOf常见值的说明
当mirrorOf的值为 central时,表示要替换中心仓。settings.xml文件有默认的中心仓(镜像仓库)地址是 maven官网地址 https://maven.apache.org。综上所述,所以当值为 central 时候替换的实际上是默认的 maven官网地址。
注:如果没有配置 mirrors标签,那么当maven去远端找包的时候,第一步依旧是先寻找 镜像仓库(中心仓库)。由于没有配置mirrors标签的原因,那么默认的 镜像仓库(中心仓库) 就是 https://maven.apache.org 地址,这也是为什么没有配置 https://maven.apache.org 地址,但是查看日志时候,发现有这个maven官方仓库的原因。
* 表示 不止替换 central (中心仓库),也替换 <repository>repository> 标签和 <pluginRepository> pluginRepository> 标签内的所有仓库。也就是说,当 mirrorOf的值为 *的时候,只有一个远端仓库地址。
repositories标签是用来配置远程仓库地址的,一个repositories标签包含多个repository标签。
注:repositories与pluginRepositories虽然都是配置远程仓库地址的标签。但是pluginRepositories配置的是插件下载地址,repositories配置的是依赖的下载地址。因此,在新增仓库时候,如果你无法区分当前的jar包是插件还是依赖,就同时配置pluginRepositories和repositories。
repository标签主要由 id和url组成,每个id不能重复,url是远程仓库的地址。
<repositories>
<repository>
<id>product_mavenid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/url>
repository>
<repository>
<id>maven-central-repoid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/maven-central-repo/url>
repository>
repositories>
snapshots标签和releases标签是 repository标签下的子标签,主要用于控制依赖 release版本和snapshot版本的下载。
<repository>
<id>maven-central-repoid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/maven-central-repo/url>
<snapshots>
<enabled>falseenabled>
snapshots>
<releases>
<enabled>trueenabled>
releases>
repository>
注:有的时候,明明配置了正确的仓库地址,但是发现包还是没有下载成功,这个时候就要检查releases和snapshots标签,是否做了下载限制
pluginRepositories标签是用来配置远程仓库地址的,一个pluginRepositories标签包含多个pluginRepository标签。
注:repositories与pluginRepositories虽然都是配置远程仓库地址的标签。但是pluginRepositories配置的是插件下载地址,repositories配置的是依赖的下载地址。因此,在新增仓库时候,如果你无法区分当前的jar包是插件还是依赖,就同时配置pluginRepositories和repositories。
pluginRepository标签主要由 id和url组成,每个id不能重复,url是远程仓库的地址。
<pluginRepositories>
<pluginRepository>
<id>maven-central-repo-pluginid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/maven-central-repo/url>
pluginRepository>
<pluginRepository>
<id>product-maven-pluginid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/url>
pluginRepository>
pluginRepositories>
snapshots标签和releases标签是 pluginRepository标签下的子标签,主要用于控制依赖 release版本和snapshot版本的下载。
<pluginRepositories>
<pluginRepository>
<id>product-maven-pluginid>
<url>https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>falseenabled>
snapshots>
pluginRepository>
pluginRepositories>
注:有的时候,明明配置了正确的仓库地址,但是发现包还是没有下载成功,这个时候就要检查releases和snapshots标签,是否做了下载限制