1. 程式人生 > >自定義 Maven 的 repositories

自定義 Maven 的 repositories

有時,應用中需要一些比較新的依賴,而這些依賴並沒有正式釋出,還是處於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外的所有依賴。即上面示例中的場景。

參考引用