問題描述
最近做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配置的倉庫都生效。
-------------------------------------------------------------分割線---------------------------------------------------------------
番外話:上面的問題產生的根本原因是,我們平時做項目時一般都是復制粘貼,根本不知道有些配置項什么意思,出了問題就百度,但是有時百度查不到時,還是要老老實實的從原理入手。
