有時,應用中須要一些比較新的依賴,而這些依賴並無正式發佈,仍是處於milestone或者是snapshot階段,並不能從中央倉庫或者鏡像站上下載到。此時,就須要spring
自定義Maven的<repositories>
。maven
<repositories>
以Spring應用程序程序爲例,須要添加一個Spring Security 5.2.0.BUILD-SNAPSHOT版本的依賴,惋惜這是個snapshot,並不在鏡像站中。url
解決方法就是在pom.xml添加一個snapshot的地址:code
<!-- Spring Snapshots倉庫 --> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> </repository> </repositories>
這樣,就能從這個倉庫中,獲取到 Spring Security 5.2.0.BUILD-SNAPSHOT版本的依賴了。xml
但有時,跟着上面的設置方法並不奏效,仍然仍是從以前的鏡像站中去下載。此時,咱們須要去檢查下 Maven 安裝目錄下的settings.xml:get
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
能夠看到,在設置鏡像時,mirrorOf設置爲了「*」,意味全部的依賴都是從這個鏡像上下載。徹底不給Spring Snapshots機會了。同步
解決方法也簡單,改成下面的方式:it
<mirror> <id>nexus-aliyun</id> <mirrorOf>*,!spring-snapshots</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
mirrorOf設置爲了「*,!spring-snapshots」,意味除了Spring Snapshots外,全部的依賴都是從這個鏡像上下載。這樣就能下載到 Spring Snapshots了。io
如下是mirrorOf的詳細解釋。class
mirrorOf的配置支持以下場景:
*
:全部依賴;
external:*
:全部再也不本地和不是基於文件的依賴;
repo,repo1
:全部來自repo或者repo1倉庫的依賴;
*,!repo1
:除了repo1外的全部依賴。即上面示例中的場景。