Idea中maven無法下載依賴包問題解決
用過idea開發(fā)過項(xiàng)目的同學(xué),偶爾會(huì)遇到項(xiàng)目中有一些依賴沒法下載,或者依賴包已經(jīng)有項(xiàng)目卻無法掃到的問題,下面就從原理來解決這類問題。
第一,鏡像的原因?qū)е聼o法下載依賴包。
這里我們簡單介紹一下maven里面的倉庫和鏡像,參考一位大佬的博客
1.1 maven倉庫

1.1.1 倉庫分類
- 本地倉庫:位于你本機(jī)上,在項(xiàng)目中優(yōu)先從本地殘酷查找依賴包,沒有則從遠(yuǎn)程倉庫找,并緩存到本地倉庫中。
- 遠(yuǎn)程倉庫(remote Repository):是一個(gè)公共的倉庫,只需要簡單的配置,便可以對其進(jìn)行包的下載。遠(yuǎn)程倉庫分為
1.中央倉庫 :http://repo1.maven.org/maven2/
2. 私服 :一般公司在用,公司擁有自己的一些工具包,無法公開到公共庫,則需要把這些包放到公司的倉庫中,供公司開發(fā)使用。
3. 其它 :其他可以互聯(lián)網(wǎng)公共訪問maven repository,例如 jboss repository等
1. Mirror
mirror相當(dāng)于一個(gè)攔截器,它會(huì)攔截maven對remote repository的相關(guān)請求,把請求里的remote repository地址,重定向到mirror里配置的地址。
原理如下圖:

BRepository 這里id代標(biāo)鏡像名稱。
http://B B倉庫的url地址。
A 表示所有訪問A倉庫的,都會(huì)被重定向到B倉庫去。
我們稱B為A的鏡像,也就是A倉庫有的包,B倉庫都有(不然還不如不配)。
下面是阿里云的鏡像配置:
<mirror> <!--該鏡像的唯一標(biāo)識(shí)符。id用來區(qū)分不同的mirror元素。 --> <id>planetmirror.com</id> <!--鏡像名稱 --> <name>aliyun</name> <!--該鏡像的URL。構(gòu)建系統(tǒng)會(huì)優(yōu)先考慮使用該URL,而非使用默認(rèn)的服務(wù)器URL。 --> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--被鏡像的服務(wù)器的id。例如,如果我們要設(shè)置了一個(gè)Maven中央倉庫(http://repo1.maven.org/maven2)的鏡像,就需要將該元素設(shè)置成 central。這必須和中央倉庫的id central完全一致。--> <mirrorOf>central</mirrorOf> </mirror>
可以看出,阿里云做為了中央倉庫的鏡像,具體的配置本文不再敘述。
那么上面兩點(diǎn)和題目有什么關(guān)系呢?
我們可以知道中央倉庫雖然很方便,但是身處國內(nèi)人開發(fā)人員,在下載依賴的時(shí)候經(jīng)常遇到7~8KB的下載速度,無疑給開發(fā)帶來了極大的痛苦,而使用阿里云等其它鏡像,可以大大加快依賴包的下載速度,還沒有配置的鏡像的你,趕緊配置一波吧。
這里介紹一下快速找到和修改setting,xml文件的方法
1.第一

2. 第二

查看和修改setting.xml 文件
第一 在項(xiàng)目上點(diǎn)擊右鍵

具體的配置

第二 profile的勾選
在實(shí)際的項(xiàng)目中,項(xiàng)目開發(fā)被經(jīng)常被分為開發(fā)版本,測試版本,發(fā)布版本。而這三個(gè)項(xiàng)目版本為了方便開發(fā)和測試,項(xiàng)目里面的會(huì)有很多不同的配置,比如數(shù)據(jù)庫的配置,中間件redis的配置等等。通過profile文件,我們可以通過簡單的勾選來確定項(xiàng)目使用那些配置和那些包,當(dāng)然profile還有更靈活的運(yùn)用,讀者可以自行百度。所以如果你沒正確勾選profile,項(xiàng)目的有些包是無法下載的?;蛘吣銜?huì)遇到,依賴包明明就有,但是項(xiàng)目里面卻無法掃描到j(luò)ar里面文件的問題(這個(gè)問題,很常見不過基本是一些小問題,比如“未刷新”和”根文件的選擇錯(cuò)誤“等)。
當(dāng)你剛?cè)胄马?xiàng)目組的時(shí)候,一定要問清楚鏡像的配置和profile的勾選問題,當(dāng)然profile是可以在setting文件里面進(jìn)行配置的。
第三 刷新maven

總結(jié)
對于后臺(tái)項(xiàng)目的啟動(dòng),在實(shí)際過程中還有很多的問題,剛?cè)肼毜耐瑢W(xué)千萬不要傻傻的自行百度,我們除了一些基本問題排查之外,更多的時(shí)候需要詢問項(xiàng)目組的開發(fā)人員,畢竟有些配置的錯(cuò)誤你找了半天,可能別人一眼就搞定了,當(dāng)然還可以是pom文件的沖突問題,這里不再詳細(xì)介紹。
相關(guān)文章
Java 異步實(shí)現(xiàn)的幾種方式小結(jié)
這篇文章主要介紹了Java 異步實(shí)現(xiàn)的幾種方式小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Boot?ORM?框架JPA使用與連接池?Hikari詳解
這篇文章主要介紹了SpringBoot?ORM框架JPA與連接池Hikari,主要就是介紹JPA?的使用姿勢,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
java中synchronized(同步代碼塊和同步方法)詳解及區(qū)別
這篇文章主要介紹了 java中synchronized(同步代碼塊和同步方法)詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-02-02
springboot訪問template下的html頁面的實(shí)現(xiàn)配置
這篇文章主要介紹了springboot訪問template下的html頁面的實(shí)現(xiàn)配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Java ThreadPoolExecutor 線程池的使用介紹
Executors 是一個(gè)Java中的工具類. 提供工廠方法來創(chuàng)建不同類型的線程池,這篇文章主要介紹了Java ThreadPoolExecutor 線程池的使用介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Mybatis報(bào)錯(cuò)日志BindingException的解決
本文主要介紹了Mybatis報(bào)錯(cuò)日志BindingException的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
關(guān)于@ApiImplicitParams、ApiImplicitParam的使用說明
這篇文章主要介紹了關(guān)于@ApiImplicitParams、ApiImplicitParam的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

