讀古今文學網 > Maven實戰 > 6.3.4 私服 >

6.3.4 私服

私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven需要下載構件的時候,它從私服請求,如果私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上之後,再為Maven的下載請求提供服務。此外,一些無法從外部倉庫下載到的構件也能從本地上傳到私服上供大家使用,如圖6-2所示。

圖6-2 私服的用途

圖6-2展示的是組織內部使用私服的情況。即使在一台直接連入Internet的個人機器上使用Maven,也應該在本地建立私服。因為私服可以幫助你:

·節省自己的外網帶寬。建立私服同樣可以減少組織自己的開支,大量的對於外部倉庫的重複請求會消耗很大的帶寬,利用私服代理外部倉庫之後,對外的重複構件下載便得以消除,即降低外網帶寬的壓力。

·加速Maven構建。不停地連接請求外部倉庫是十分耗時的,但是Maven的一些內部機制(如快照更新檢查)要求Maven在執行構建的時候不停地檢查遠程倉庫數據。因此,當項目配置了很多外部遠程倉庫的時候,構建的速度會被大大降低。使用私服可以很好地解決這一問題,當Maven只需要檢查局域網內私服的數據時,構建的速度便能得到很大程度的提高。

·部署第三方構件。當某個構件無法從任何一個外部遠程倉庫獲得,怎麼辦?這樣的例子有很多,如組織內部生成的私有構件肯定無法從外部倉庫獲得、Oracle的JDBC驅動由於版權因素不能發佈到公共倉庫中。建立私服之後,便可以將這些構件部署到這個內部的倉庫中,供內部的Maven項目使用。

·提高穩定性,增強控制。Maven構建高度依賴於遠程倉庫,因此,當Internet不穩定的時候,Maven構建也會變得不穩定,甚至無法構建。使用私服後,即使暫時沒有Internet連接,由於私服中已經緩存了大量構件,Maven也仍然可以正常運行。此外,一些私服軟件(如Nexus)還提供了很多額外的功能,如權限管理、RELEASE/SNAPSHOT區分等,管理員可以對倉庫進行一些更高級的控制。

·降低中央倉庫的負荷。運行並維護一個中央倉庫不是一件容易的事情,服務數百萬的請求,存儲數T的數據,需要相當大的財力。使用私服可以避免很多對中央倉庫重複的下載,想像一下,一個有數百位開發人員的公司,在不使用私服的情況下,一個構件往往會被重複下載數百次;建立私服之後,這幾百次下載就只會發生在內網範圍內,私服對於中央倉庫只有一次下載。

建立私服是用好Maven十分關鍵的一步,第9章會專門介紹如何使用最流行的Maven私服軟件——Nexus。