Maven倉庫介紹以及私服搭建

 

1 什麼是Maven?

1.1 Maven的概念

  Maven主要服務於基於Java平臺的項目構建、依賴管理和項目信息開發,它是一個異常強大的構建工具,能夠幫助我們自動化構建過程,從清理、編譯、測試到生成報告,再到打包和部署。

 

1.2 Maven的優點

1.2.1 便捷

  使用Maven最大的一點優點就是便捷。構建項目時,開發者無需一遍又一遍地輸入命令,一次又一次地點擊鼠標,我們需要做的就是輸入Maven的簡單命令,Maven會幫我們處理那些繁瑣的任務。

1.2.2 標準化構建方式

  在使用Maven之前,多個項目可能有多種構建方式;使用Maven之後,多個項目的構建方式被統一起來,這樣極大地避免了不必要的學習成本,而且有利於項目團隊的標準化。

1.2.3 提供中央倉庫

  Maven不僅僅是構建工具,它還是一個依賴管理工具和項目信息管理工具。它提供有公共的中央倉庫,只要我們提供項目所需構件的“座標”,Maven能幫助我們自動下載,省去手工尋找的時間成本。

 

2 什麼是Maven倉庫

2.1 Maven倉庫的概念

  在Maven的世界中,任何一個依賴、插件或者項目構建的輸出,都可以被稱爲構件,每一個構件都有其唯一的座標標識(主要包含groupId、artifactId、version)。根據座標標識,任何Maven項目使用任何一個構件的方式是完全相同的。在此基礎上,Maven可以在某個位置統一存儲所有Maven項目共享的構件,這個統一的位置就是Maven倉庫。

       實際的Maven項目將不再各自存儲其依賴文件,它們只需要聲明這些依賴的座標,在需要的時候(編譯項目時),Maven會自動根據座標找到倉庫中的構件並使用它們。

 

2.2 Maven倉庫的分類

2.2.1 本地倉庫

  本地倉庫即存儲在本機磁盤中的某個文件夾,Maven下載的構件都存儲在該文件夾下。在安裝Maven軟件後,默認情況下在用戶目錄下都有一個路徑爲“.m2/repository/”的倉庫目錄,目錄路徑類似如下形式:“C:\Users\xxx\.m2\repository\”,另外開發者可編輯Maven安裝目錄下“conf”文件夾中的“settings.xml”文件,在其中設置本地倉庫的路徑。具體的設置並不是本文重點,在此不加以描述,讀者可請自行百度。

 

2.2.2 遠程倉庫

       顧名思義,遠程倉庫即是存儲在遠端服務器中的某個文件夾,該文件夾存儲構件以供開發者進行下載,Maven就自帶其中央倉庫,我們可點擊如下地址進行該倉庫構件的查詢https://mvnrepository.com/

 

2.3 Maven構件下載順序

       當Maven根據座標尋找構件時,會優先查看本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要查看是否有更新的構件版本,Maven就會去遠程倉庫去查找,發現所需構件後,將其下載到本地再使用。

 

3 Maven私服

3.1 Maven私服的概念

  私服是一種特殊的遠程倉庫,爲了節省帶寬和時間,大多數公司會選擇在局域網中架設一個私有的倉庫服務器,用其代理所有外部的遠程倉庫。內部的項目還可以部署到私服上以供其他項目使用。當Maven下載構件時,它從私服請求,若私服不存在此構件,Maven則從遠程倉庫查找並存儲到私服中,在從私服中請求下載構件。此外,一些無法從外部倉庫下載到的構件也能從本地上傳到私服倉庫中供大家使用。以下給出示例圖。

   

 

3.2 建立私服的好處

3.2.1 節省帶寬

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

3.2.2 加速Maven構建

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

3.3.3 部署第三方構件

       當某個構件無法從任何一個外部遠程倉庫獲得,怎麼辦?建立私服之後,用戶可以將這些構件部署到該倉庫中,供內部的Maven項目使用。

3.3.4 提高穩定性,增強控制

       Maven構建高度依賴遠程倉庫,因此,當外網連接不穩定時(如公司網絡出現問題、遠程倉庫需要維護無法連接等),Maven構建會變得極其不穩定,甚至無法成功構建項目。建立私服後,即使暫時沒有外網連接,由於私服中已經緩存了大量的構件,Maven仍然可以正常構建項目。另外一些私服軟件提供了很多額外的功能,如權限管理、版本區分等,管理員可以對倉庫進行一些更高級的控制。

 

4 構建Maven私服

4.1 選擇搭建工具

  搭建Maven私服的工具有三種:Apache基金會的Archiva、JFrog的Artifactory和Sonatype的Nexus。其中Archiva是完全開源的,因此我建議選擇該軟件進行私服的搭建。

 

4.2 JDK的下載和安裝

  Archiva的應用啓動需要用戶提前安裝jdk,關於jdk的下載和安裝本文不再描述,請讀者自行百度。

 

4.3 Archiva的下載和安裝

       點擊如下地址進入其官網地址:http://archiva.apache.org/index.cgi,在該頁面中找到“Download Archiva”按鈕,選擇zip文件進行下載,如下圖:

 

 

 

 

 

      

  下載完成後解壓該文件,將其中的“apache-archiva-xxx”文件夾放到某個磁盤目錄下,其中該文件夾根目錄下conf文件夾中的“jetty.xml”可以設置應用啓動的端口,具體設置詳情請百度。

 

4.4 啓動服務

(1) 使用“管理員身份運行cmd”  (開始菜單的附件中),進入軟件安裝目錄中bin目錄;

  C:\Windows\system32>cd D:\Program Files\apache-archiva-2.2.1\bin

  C:\Windows\system32>D:

(2)輸入命令“archiva.bat install”,命令運行正常則會輸出“wrapper | Apache Archiva installed.”;

  E:\Program Files\apache-archiva-2.2.1\bin>archiva.bat install

  wrapper | Apache Archiva installed.

(3)輸入命令“archiva.bat start”,命令運行正常則會輸出“wrapper | Starting the Apache Archiva service...、wrapper | Apache Archiva started.”;

  E:\Program Files\apache-archiva-2.2.1\bin>archiva.bat start

  wrapper | Starting the Apache Archiva service...

wrapper | Apache Archiva started.

 

4.5 訪問服務網頁

  打開瀏覽器,在地址欄中輸入http://host:port(具體的host和port用戶自行指定),進入到軟件管理GUI頁面,第一次訪問時,用戶可創建一個管理員賬戶。

 

 

  用戶登錄成功後,頁面左側菜單欄羅列出軟件全部功能菜單,用戶可根據需要進行相關的配置。關於Archiva的各項配置說明,請讀者自行百度。

 

 

 

 

 

4.6 下載和上傳構件

4.6.1 下載構件

4.6.1.1 配置本地Maven的settings.xml

(1)配置同服務器的認證信息

在<servers>標籤下新建一個<server>標籤,在該標籤下新建子標籤<id>、<username>、<password>,其中id 是要認證的服務器名稱,可以配置多個。它是用來標記服務器的,要唯一;username和password是登錄私服服務器所需用戶名和密碼。如果要連接多個私服,可以類似地配置多個 server,每個 server 是一個私服的認證信息。

(2)配置要連接的私服信息

在<mirrors>標籤下新建一個<mirror>標籤,在該標籤下新建子標籤<id>、<mirrorOf>、<name>、<url>,其中id 是私服映射的標記,該標記要同 server 中的 id 一樣,如果連接私服需要認證信息,Maven 可以通過 id 找對應的 server,用 server 的認證信息進行認證;mirrorOf的值設置爲“*”,表示匹配所有遠程倉庫,name爲該私服倉庫的名稱,可隨意取,方便自己記憶和理解就好;url爲該私服倉庫的url地址,值爲http://host:port/repository/倉庫id(該值爲默認值,用戶可以修改);

 

 

 

4.6.1.2 創建Maven項目

  使用上述配置的settings.xml的Maven工具創建Maven項目,接下來的添加依賴和之前的添加方式並無區別,至此私服搭建完畢並可以使用。

4.6.2 上傳構件

4.6.2.1 配置Maven項目的pom文件

       在project標籤內,添加<distributionManagement>標籤,指定要發佈的目標地(私服)。具體內容如下:

<distributionManagement>

    <repository>

    <id>archivaServer(倉庫id)</id>

    <url>http://localhost:8080/repository/internal(倉庫地址)</url>

    </repository>

    <snapshotRepository>

        <id>archivaServer(倉庫id)</id>

        <url>http://localhost:8080/repository/snapshots(倉庫地址)</url>

    </snapshotRepository>

</distributionManagement>

 

  上面的信息配置了兩個倉庫 url,一個是 repository;另一個是快照 repository。每個 repository 中都有一個 url。

 

4.6.2.2 運行發佈命令

       運行Maven的deploy命令,Maven會自動編譯和打包項目,並將其發佈到私服倉庫中。發佈完畢後,開發者即可隨心所欲使用該構件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章