1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      淺談Maven項(xiàng)目中依賴的搜索順序

      網(wǎng)上有很多關(guān)于maven項(xiàng)目中mirror、profile、repository的搜索順序的文章,說(shuō)法不一。官方文檔并沒(méi)有找到相關(guān)的說(shuō)明,鑒于此,我抽時(shí)間做了一個(gè)驗(yàn)證。

      為積石山保安族東鄉(xiāng)族等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及積石山保安族東鄉(xiāng)族網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、積石山保安族東鄉(xiāng)族網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      依賴倉(cāng)庫(kù)的配置方式

      maven項(xiàng)目使用的倉(cāng)庫(kù)一共有如下幾種方式:

      1. 中央倉(cāng)庫(kù),這是默認(rèn)的倉(cāng)庫(kù)
      2. 鏡像倉(cāng)庫(kù),通過(guò) sttings.xml 中的 settings.mirrors.mirror 配置
      3. 全局profile倉(cāng)庫(kù),通過(guò) settings.xml 中的 settings.repositories.repository 配置
      4. 項(xiàng)目倉(cāng)庫(kù),通過(guò) pom.xml 中的 project.repositories.repository 配置
      5. 項(xiàng)目profile倉(cāng)庫(kù),通過(guò) pom.xml 中的 project.profiles.profile.repositories.repository 配置
      6. 本地倉(cāng)庫(kù)

      如果所有配置都存在,依賴的搜索順序就會(huì)變得異常復(fù)雜。

      分析依賴搜索順序

      先從最簡(jiǎn)單開始,慢慢增加配置,查看有什么變化。

      準(zhǔn)備測(cè)試環(huán)境

      安裝jdk、maven。

      使用如下命令創(chuàng)建測(cè)試項(xiàng)目:

      復(fù)制代碼 代碼如下:
      yes | mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp  -DinteractiveMode=true -DgroupId=com.pollyduan -DartifactId=myweb -Dversion=1.0 -Dpackage=com.pollyduan

      創(chuàng)建完成后,為了避免后續(xù)測(cè)試干擾,先執(zhí)行一次compile。

      cd myweb
      mvn compile

      最后,修改 pom.xml 文件,將 junit版本號(hào)改為 4.12 。我們要使用這個(gè)jar來(lái)測(cè)試依賴的搜索順序。

      默認(rèn)情況

      首先確保junit4.12不存在:

      rm -rf ~/.m2/repository/junit/junit/4.12

      默認(rèn)情況下沒(méi)有配置任何倉(cāng)庫(kù),也就是說(shuō),既沒(méi)改 $M2_HOME/conf/settings.xml 也沒(méi)有添加 ~/.m2/settings.xml

      執(zhí)行編譯,查看日志中拉取junit的倉(cāng)庫(kù)。

      mvn compile
      
      ...
      Downloaded from central: https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom (24 kB at 11 kB/s)
      

      可以看出,默認(rèn)是從 central 中央倉(cāng)庫(kù)拉取的jar.

      配置鏡像倉(cāng)庫(kù) settings_mirror

      創(chuàng)建 ~/.m2/setttings.xml ,內(nèi)容如下:

      
       
        
         settings_mirror
         https://maven.aliyun.com/repository/public
         central
        
       
      
      

      重新測(cè)試:

      rm -rf ~/.m2/repository/junit/junit/4.12
      mvn compile

      在日志中查看下載依賴的倉(cāng)庫(kù):

      復(fù)制代碼 代碼如下:
      Downloaded from settings_mirror: https://maven.aliyun.com/repository/public/junit/junit/4.12/junit-4.12.pom (24 kB at 35 kB/s)

      可以看出,是從 settings_mirror 中下載的jar

      結(jié)論:settings_mirror 的優(yōu)先級(jí)高于 central

      配置pom中的倉(cāng)庫(kù) pom_repositories

      在 project 中增加如下配置:

      
       
        pom_repositories
        local
        http://10.18.29.128/nexus/content/groups/public/
        
         true
        
        
         true
        
       
      
      

      由于我們改變了id的名字,所以倉(cāng)庫(kù)地址無(wú)所謂,使用相同的地址也不影響測(cè)試。

      執(zhí)行測(cè)試:

      rm -rf ~/.m2/repository/junit/junit/4.12
      mvn compile

      在日志中查看下載依賴的倉(cāng)庫(kù):

      復(fù)制代碼 代碼如下:
      Downloaded from pom_repositories: http://10.18.29.128/nexus/content/groups/public/junit/junit/4.12/junit-4.12.pom (24 kB at 95 kB/s)

      從顯示的倉(cāng)庫(kù)id可以看出:

      • jar 是從 pom_repositories 中下載的。
      • pom_repositories 優(yōu)先級(jí)高于 settings_mirror

      配置全局profile倉(cāng)庫(kù) settings_profile_repo

      在 ~/.m2/settings.xml 中 settings 的節(jié)點(diǎn)內(nèi)增加:

      
       
       s_profile
       
        
         settings_profile_repo
         netease
         http://mirrors.163.com/maven/repository/maven-public/
         
          true
         
         
          true
         
        
       
       
      

      執(zhí)行測(cè)試:

      rm -rf ~/.m2/repository/junit/junit/4.12
      mvn compile -Ps_profile

      在日志中查看下載依賴的倉(cāng)庫(kù):

      復(fù)制代碼 代碼如下:
      Downloaded from settings_profile_repo: http://mirrors.163.com/maven/repository/maven-public/junit/junit/4.12/junit-4.12.pom (24 kB at 63 kB/s)

      從顯示的倉(cāng)庫(kù)id可以看出:

      • jar 是從 settings_profile_repo 中下載的。
      • settings_profile_repo 優(yōu)先級(jí)高于 settings_mirror。
      • settings_profile_repo 優(yōu)先級(jí)高于 pom_repositories 。

      配置項(xiàng)目profile倉(cāng)庫(kù) pom_profile_repo

      
       
        p_profile
        
         
          pom_profile_repo
          local
          http://10.18.29.128/nexus/content/groups/public/
          
           true
          
          
           true
          
         
        
       
      
      

      執(zhí)行測(cè)試:

      rm -rf ~/.m2/repository/junit/junit/4.12
      mvn compile -Ps_profile,p_profile
      mvn compile -Pp_profile,s_profile

      在日志中查看下載依賴的倉(cāng)庫(kù):

      復(fù)制代碼 代碼如下:
      Downloaded from settings_profile_repo: http://mirrors.163.com/maven/repository/maven-public/junit/junit/4.12/junit-4.12.pom (24 kB at 68 kB/s)

      從顯示的倉(cāng)庫(kù)id可以看出:

      • jar 是從 settings_profile_repo 中下載的
      • settings_profile_repo 優(yōu)先級(jí)高于 pom_profile_repo

      進(jìn)一步測(cè)試:

      rm -rf ~/.m2/repository/junit/junit/4.12
      mvn compile -Pp_profile

      在日志中查看下載依賴的倉(cāng)庫(kù):

      復(fù)制代碼 代碼如下:
      Downloaded from pom_profile_repo: http://10.18.29.128/nexus/content/groups/public/junit/junit/4.12/junit-4.12.pom (24 kB at 106 kB/s)

      從顯示的倉(cāng)庫(kù)id可以看出:

      • jar 是從 settings_profile_repo 中下載的
      • pom_profile_repo 優(yōu)先級(jí)高于 pom_repositories

      最后確認(rèn) local_repo 本地倉(cāng)庫(kù) ~/.m2/repository

      這不算測(cè)試了,只是一個(gè)結(jié)論,可以任意測(cè)試。

      只要 ~/.m2/repository 中包含依賴,無(wú)論怎么配置,都會(huì)優(yōu)先使用local本地倉(cāng)庫(kù)中的jar.

      最終結(jié)論

      • settings_mirror 的優(yōu)先級(jí)高于 central
      • settings_profile_repo 優(yōu)先級(jí)高于 settings_mirror
      • settings_profile_repo 優(yōu)先級(jí)高于 pom_repositories
      • settings_profile_repo 優(yōu)先級(jí)高于 pom_profile_repo
      • pom_profile_repo 優(yōu)先級(jí)高于 pom_repositories
      • pom_repositories 優(yōu)先級(jí)高于 settings_mirror

      通過(guò)上面的比較得出完整的搜索鏈:

      local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

      以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


      本文名稱:淺談Maven項(xiàng)目中依賴的搜索順序
      轉(zhuǎn)載注明:http://www.ef60e0e.cn/article/jjdhhe.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        曲麻莱县| 米林县| 邵阳县| 湛江市| 永寿县| 泰和县| 赤峰市| 屏南县| 镇安县| 右玉县| 兰考县| 尤溪县| 沧州市| 石城县| 循化| 孟津县| 龙井市| 报价| 西藏| 嘉善县| 石棉县| 白河县| 满城县| 伊金霍洛旗| 大方县| 三原县| 吴旗县| 盖州市| 临颍县| 陆川县| 临海市| 班戈县| 田东县| 海门市| 呼图壁县| 鄄城县| 沐川县| 旺苍县| 沈阳市| 福建省| 盖州市|