问题描述
最近做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配置的仓库都生效。
-------------------------------------------------------------分割线---------------------------------------------------------------
番外话:上面的问题产生的根本原因是,我们平时做项目时一般都是复制粘贴,根本不知道有些配置项什么意思,出了问题就百度,但是有时百度查不到时,还是要老老实实的从原理入手。