自定義 Maven 的 repositories
阿新 • • 發佈:2018-12-12
有時,應用中需要一些比較新的依賴,而這些依賴並沒有正式釋出,還是處於milestone或者是snapshot階段,並不能從中央倉庫或者映象站上下載到。此時,就需要
自定義Maven的<repositories>
。
自定義Maven的<repositories>
以Spring應用程式程式為例,需要新增一個Spring Security 5.2.0.BUILD-SNAPSHOT版本的依賴,可惜這是個snapshot,並不在映象站中。
解決方法就是在pom.xml新增一個snapshot的地址:
<!-- 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版本的依賴了。
檢查Maven的settings.xml
但有時,跟著上面的設定方法並不奏效,仍然還是從之前的映象站中去下載。此時,我們需要去檢查下 Maven 安裝目錄下的settings.xml:
<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機會了。
解決方法也簡單,改為下面的方式:
<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了。
以下是mirrorOf的詳細解釋。
mirrorOf的配置解釋
mirrorOf的配置支援如下場景:
-
*
:所有依賴; -
external:*
:所有不再本地和不是基於檔案的依賴; -
repo,repo1
:所有來自repo或者repo1倉庫的依賴; -
*,!repo1
:除了repo1外的所有依賴。即上面示例中的場景。