1. 程式人生 > >Maven:mirror(映象)和repository(倉庫) 區別

Maven:mirror(映象)和repository(倉庫) 區別

internal repository是指在區域網內部搭建的repository,它跟central repository, jboss repository等的區別僅僅在於其URL是一個內部網址 
mirror則相當於一個代理,它會攔截去指定的遠端repository下載構件的請求,然後從自己這裡找出構件回送給客戶端。配置mirror的目的一般是出於網速考慮。 
可以看出,internal repository和mirror是兩碼事。前者本身是一個repository,可以和其它repository一起提供服務,比如它可以用來提供公司內部的maven構件;而後者本身並不是repository,它只是遠端repository的網路加速器。 

不過,很多internal repository搭建工具往往也提供mirror服務,比如Nexus就可以讓同一個URL,既用作internal repository,又使它成為所有repository的mirror。

如果倉庫X可以提供倉庫Y儲存的所有內容,那麼就可以認為X是Y的一個映象。換句話說,任何一個可以從倉庫Y獲得的構件,都胡夠從它的映象中獲取。舉個例子,http://maven.net.cn/content/groups/public/ 是中央倉庫http://repo1.maven.org/maven2/ 在中國的映象,由於地理位置的因素,該映象往往能夠提供比中央倉庫更快的務。因此,可以配置Maven使用該映象來替代中央倉庫。編輯settings.xml,程式碼如下:

?
1 2 3 4 5 6 7 8 9 10 11 12 <settings> ... <mirrors> <mirror> <id>maven.net.cn</id> <name>one of the central mirrors in china</name> <url>http://maven.net.cn/content/groups/public/</url> <mirrorOf>central</mirrorOf>
</mirror> </mirrors> ... </settings>
該例中,<mirrorOf>的值為central,表示該配置為中央倉庫的映象,任何對於中央倉庫的請求都會轉至該映象,使用者也可以使用同樣的方法配置其他倉庫的映象。另外三個元素id,name,url與一般倉庫配置無異,表示該映象倉庫的唯一識別符號、名稱以及地址。類似地,如果該映象需認證,也可以基於該id配置倉庫認證。 
關於映象的一個更為常見的用法是結合私服。由於私服可以代理任何外部的公共倉庫(包括中央倉庫),因此,對於組織內部的Maven使用者來說,使用一個私服地址就等於使用了所有需要的外部倉庫,這可以將配置集中到私服,從而簡化Maven本身的配置。在這種情況下,任何需要的構件都可以從私服獲得,私服就是所有倉庫的映象。這時,可以配置這樣的一個映象,如例:  
?
1 2 3 4 5 6 7 8 9 10 11 12 <settings> ... <mirrors> <mirror> <id>internal-repository</id> <name>Internal Repository Manager</name> <url>http://192.168.1.100/maven2</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ... </settings>
該例中<mirrorOf>的值為星號,表示該配置是所有Maven倉庫的映象,任何對於遠端倉庫的請求都會被轉至http://192.168.1.100/maven2/。如果該映象倉庫需要認證,則配置一個Id為internal-repository的<server>即可。為了滿足一些複雜的需求,Maven還支援更高階的映象配置: 
1.<mirrorOf>*</mirrorOf> 
匹配所有遠端倉庫。 
2.<mirrorOf>external:*</mirrorOf> 
匹配所有遠端倉庫,使用localhost的除外,使用file://協議的除外。也就是說,匹配所有不在本機上的遠端倉庫。 
3.<mirrorOf>repo1,repo2</mirrorOf> 
匹配倉庫repo1和repo2,使用逗號分隔多個遠端倉庫。 
4.<mirrorOf>*,!repo1</miiroOf> 
匹配所有遠端倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。 

需要注意的是,由於映象倉庫完全遮蔽了被映象倉庫,當映象倉庫不穩定或者停止服務的時候,Maven仍將無法訪問被映象倉庫,因而將無法下載構件。

簡單點來說,repository就是個倉庫。maven裡有兩種倉庫,本地倉庫和遠端倉庫。遠端倉庫相當於公共的倉庫,大家都能看到。本地倉庫是你本地的一個山寨版,只有你看的到,主要起快取作用。當你向倉庫請求外掛或依賴的時候,會先檢查本地倉庫裡是否有。如果有則直接返回,否則會向遠端倉庫請求,並做快取。你也可以把你做的東西上傳到本地倉庫給你本地自己用,或上傳到遠端倉庫,供大家使用。 
遠端倉庫可以在工程的pom.xml檔案裡指定,樓上兩位已經列的很清楚了。如果沒指定,預設就會把下面這地方做遠端倉庫,即預設會到http://repo1.maven.org/maven2這個地方去請求外掛和依賴包。 
   

Xml程式碼  收藏程式碼
  1. <repository>  
  2.       <snapshots>  
  3.         <enabled>false</enabled>  
  4.       </snapshots>  
  5.       <id>central</id>  
  6.       <name>Maven Repository Switchboard</name>  
  7.       <url>http://repo1.maven.org/maven2</url>  
  8.     </repository>  

相關推薦

Mavenmirror映象repository倉庫 區別

internal repository是指在區域網內部搭建的repository,它跟central repository, jboss repository等的區別僅僅在於其URL是一個內部網址 mirror則相當於一個代理,它會攔截去指定的遠端repository下載構

Mavenmirrorrepository 區別

stat 3.1 space 架設 遠程 mave 無法 支持 http 1 Repository(倉庫) 1.1 Maven倉庫主要有2種: remote repository:相當於公共的倉庫,大家都能訪問到,一般可以用URL的形式訪問 local repo

Mavenmirrorrepository區別

什麼是映象? 什麼是倉庫? 1.Repository(倉庫) 1.1 Maven倉庫種類 有2大類倉庫: 遠端 remote repository:相當於公共的倉庫,大家都能訪問到,一般可以用URL的形式訪問。 本

VMware中CentOS配置靜態IP進行網絡訪問NAT方式橋接模式

name nat模式 定義 終端 star static state alt 相關 傳送門:http://blog.csdn.net/zhangatle/article/details/77417310 其實這個博主的博客最是適合新手學習,踩過的坑讓我再踩一踩,印象深刻

SQL Server 2017 正式發布同時支持 Windows Linux現在看下來,當年那德拉的“雲優先,移動優先”是有遠見的,而且是有一系列的措施產品相配合的,只是需要一點時間而已。真是佩服!!

suse 中新 新的 ada 開發 tap 安全性 adding 互連 微軟在去年 3 月首次對外宣布了 Linux 版的 SQL Server,並於今年 7 月發布了首個公開 RC 版。前幾日在美國奧蘭多召開的微軟 Ignite 2017 大會上,微軟宣布 SQL Ser

Vue--axiosvue中的ajax異步請求發送請求數據

lan his src 操作 ajax請求 itl func gin 出錯 一.使用axios發送get請求 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <me

js網頁中的高document

冒泡 Language ntop int border dom html tee play 一,此例中通過鼠標點擊事件在網頁的中心位置創建一個盒子,不管瀏覽器變小,或是有卷曲的網頁,盒子都會在瀏覽器正中央 主要方法:clientWidth方法獲取當前可見網頁的寬度

關於SQL SEVER防火墻配置問題遠程調試要求開通DCOMTCP端口135IPESCUDP端口4500/500

soft tex 意思 調試 body 操作 post gpo eight 初學SQL SEVER 2008,結果第一次調試就出現了這個問題: 然後 百度了一下,這三個選項的意思: 取消遠程調試:取消啟動調試的嘗試。您的計算機的安全設置保持不變。 取消禁止從本地網

筆記 -《計算機網路自頂向下方法》 第5章 鏈路層鏈路、接入網區域網0

第5章 鏈路層:鏈路、接入網和區域網(0)   ** “結構” 均為本章知識結構; ** “假設” 均為理想化,抽象的模型; ** “例項” 均為已經投入使用的模型; (結構1)   (假設1)同一子網內 傳遞網路層資料報的鏈路層工作流程 &nbs

No.19程式碼練習斐波那契數列,某數k次冪,模擬實現strlen(),階乘 ,逆置字串遞迴非遞迴

學習不易,需要堅持。 遞迴 程式呼叫自身的程式設計技巧稱為遞迴( recursion)。遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需

HihoCoder - 1496尋找最大值高維字首||手動求子集

描述 給定N個數A1, A2, A3, ... AN,小Ho想從中找到兩個數Ai和Aj(i ≠ j)使得乘積Ai × Aj × (Ai AND Aj)最大。其中AND是按位與操作。   小Ho當然知道怎麼做。現在他想把這個問題交給你。 輸入 第一行

程序程序間通訊 —— Queue佇列Pipe管道

目錄 程序間通訊 佇列  概念介紹 方法介紹 程式碼例項 生產者消費者模型 JoinableQueue([maxsize])  管道(瞭解) 程序間通訊 IPC(Inter-Process Communication) 佇列&nbs

【linux】Valgrind工具集詳解SGCheck檢查棧全域性陣列溢位

一、概述 SGCheck是一種用於檢查棧中和全域性陣列溢位的工具。它的工作原理是使用一種啟發式方法,該方法源於對可能的堆疊形式和全域性陣列訪問的觀察。 棧中的資料:例如函式內宣告陣列int a[10],而不是malloc分配的,malloc分配的記憶體是在堆中。 SGCheck和Me

Spring Cloud配置中心svn示例refresh07

上一篇springcloud(六):配置中心git示例留了一個小問題,當重新修改配置檔案提交後,客戶端獲取的仍然是修改前的資訊,這個問題我們先放下,待會再講。國內很多公司都使用的svn來做程式碼的版本控制,我們先介紹以下如何使用svn+Spring Cloud Config來做配置中心。 &nb

Spring Cloud熔斷監控Hystrix DashboardTurbine05

Hystrix-dashboard是一款針對Hystrix進行實時監控的工具,通過Hystrix Dashboard我們可以在直觀地看到各Hystrix Command的請求響應時間, 請求成功率等資料。但是隻使用Hystrix Dashboard的話, 你只能看到單個應用內的服務資訊, 這明顯不夠

c語言程式設計用strcpy比較陣列銀行卡密碼程式設計,strcpy複製陣列內容getchar敲鍵盤字元,統計不想要的字元的個數

統計從鍵盤輸入一行字元的個數:   1 //用了getchar() 語句 2 //這裡的\n表示回車 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int n =

docker進階自定義映象、網路架構

一、製作自定義映象(docker commit) 要求:基於centos映象使用commit建立新的映象檔案。 1、使用映象啟動容器 在該容器基礎上修改yum源 [[email protected] docker_images]# docker run

Java資料結構二叉樹的前序,中序,後序遍歷遞迴非遞迴

嚶嚶嚶,兩個月沒寫部落格了,由於有點忙,今天開始日更部落格。 今天總結一下學習樹的先根,中根,後根。每種兩種方法,遞迴和非遞迴。 先根: 遞迴: 思路:先根遍歷,即第一次遇到的結點就開始列印。先一直遍歷左子樹,直到未空,然後右子樹,直到為空。遞迴下去。 過程:先將1進入方法

筆記 -《計算機網路自頂向下方法》 第5章 鏈路層鏈路、接入網區域網8

第5章 鏈路層:鏈路、接入網和區域網(8)鏈路層交換機 鏈路層交換機的任務是從入鏈路接收鏈路層幀,並將其轉發到對應的出鏈路。 鏈路層交換機對子網中的主機和路由器是透明的。 鏈路層幀到達交換機的任何介面的速率可能暫時會超過該介面的鏈路數量,所以在介面設有快取。 鏈路層交換

JVM快速調優之一記憶體結構堆記憶體非堆記憶體

圖為Java虛擬機器執行時的資料區: 1.方法區 也稱"永久代” 、“非堆”, 它用於儲存虛擬機器載入的類資訊、常量、靜態變數、是各個執行緒共享的記憶體區域。預設最小值為16MB,最大值為64MB(未驗證),可以通過-XX:PermSize 和 -XX:Ma