问题描述
最近做java项目,需要使用公司自己搭建的maven仓库,但是有些包公司的仓库中没有,导致下载失败。
项目环境
jdk:1.8
maven:3.5
问题原因分析
maven的setting文件配置信息如下:
<?xml version="1.0" encoding="UTF-8"?> <settings> <localRepository>/data/repository</localRepository> <servers> <server> <id>releases</id> <username>123</username> <password>123</password> </server> <server> <id>snapshots</id> <username>123</username> <password>123</password> </server> </servers> <mirrors> <!--注意标红的部分--> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://server.dev.****.com:8000/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository>
pom.xml中的配置:
<repositories> <repository> <id>aliyun-repos</id> <url>https://maven.aliyun.com/repository/public</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </repository> <repository> <id>sonatype-repos-s</id> <name>Sonatype Repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> <releases><enabled>false</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </repository> </repositories>
我需要下载的包的仓库地址在pom文件中配置了,就是 https://oss.sonatype.org/content/repositories/snapshots,这个仓库,
但是为什么下载的时候没有起作用呢?问题就出在setting中如下部分:
<mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://server.dev.****.com:8081/nexus/content/groups/public/</url> </mirror>
mirrorof标签,这个标签如果设置为*,就说明整个工程只能使用settings中配置的地址,这个就是问题的根源。
解决办法
在settings文件的mirrorof标签中内容改成(! sonatype-repos-s,* ),括号里面的内容,不包括括号,这样做的意思是, !sonatype-repos-s意思是 把 sonatype-repos-s这个仓库排除在外,依然把公司的仓库作为唯一仓库,这样就可以使用settings文件中配置的仓库和pom.xml配置的仓库都生效。
-------------------------------------------------------------分割线---------------------------------------------------------------
番外话:上面的问题产生的根本原因是,我们平时做项目时一般都是复制粘贴,根本不知道有些配置项什么意思,出了问题就百度,但是有时百度查不到时,还是要老老实实的从原理入手。