自定義 Maven 的 repositories

有時,應用中須要一些比較新的依賴,而這些依賴並無正式發佈,仍是處於milestone或者是snapshot階段,並不能從中央倉庫或者鏡像站上下載到。此時,就須要spring

自定義Maven的<repositories>maven

自定義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

但有時,跟着上面的設置方法並不奏效,仍然仍是從以前的鏡像站中去下載。此時,咱們須要去檢查下 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的配置解釋

mirrorOf的配置支持以下場景:

  • *:全部依賴;

  • external:*:全部再也不本地和不是基於文件的依賴;

  • repo,repo1:全部來自repo或者repo1倉庫的依賴;

  • *,!repo1:除了repo1外的全部依賴。即上面示例中的場景。

參考引用

相關文章
相關標籤/搜索