maven setting 配置倉庫,pom.xml中repository不起作用


問題描述

最近做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配置的倉庫都生效。

 

-------------------------------------------------------------分割線---------------------------------------------------------------

番外話:上面的問題產生的根本原因是,我們平時做項目時一般都是復制粘貼,根本不知道有些配置項什么意思,出了問題就百度,但是有時百度查不到時,還是要老老實實的從原理入手。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM