在ES項目編寫中遇到一個問題:在配置的阿里雲鏡像中沒有合適的jar需要配置其他的鏡像,但是不知道如何使其生效。實際上這是一個常見的通用問題——由於訪問訪問遠程中央鏡像時速沒有那么理想,通常使用阿里雲鏡像替代;但是部分jar是在阿里雲上沒有的,就需要單獨進行配置鏡像並能有效使用。
雖然 mirrors 可以配置多個子節點,但是它只會使用其中的一個節點,即默認情況下配置多個 mirror 的情況下,只有第一個生效,只有當前一個 mirror 無法連接的時候,才會去找后一個;而實際項目中想要的效果是:當a.jar在第一個 mirror 中不存在的時候,maven會自動去下一個 mirror 中查詢下載,但是maven執行機制不是這樣的!
例如下列鏡像配置:
需要的co.elastic相關的內容在alimaven中並全,需要的是co.elastic.clent.X,但是alimaven中提供的只有如下與日志相關內容,即使配置了repo1——即maven執行的時候因為第一個有效所以只會在第一個alimaven中進行查找,repo1配置了等於沒有配置:
怎么解決這個問題呢?搬磚關於Maven配置文件中的mirrorOf標簽以及配置多個Maven鏡像時使用鏡像的順序_Mr.tony_mouse的博客-CSDN博客_maven配置多個倉庫還需要mirros標簽嗎
id和url是一伙的,mirrorOf是一伙的:id的作用是定位唯一的maven倉庫A,url是該倉庫A的url,mirrorOf標簽中需要填的另一個倉庫的id(同樣,該id可以唯一定位一個倉庫B)。
當maven項目准備從倉庫B下載依賴時,會對settinngs.xml中設置的鏡像進行匹配,實際上就是看哪個鏡像中mirrorOf的值指向了B,則轉而從A下載依賴。 可見鏡像,其實就是代理——將A設置為B的鏡像,原本通過B下載的依賴會轉為從A下載。
實操如下:
setting.xml配置:
pom.xml中添加配置:
成功,沒有紅色的錯誤提示: