1. 程式人生 > 實用技巧 >Maven知識記錄(三)專案中使用maven私服

Maven知識記錄(三)專案中使用maven私服

Maven知識記錄(三)專案中使用maven私服

如何在專案的pom中使用maven私服

在上一篇文章中已將nexus搭建完成。訪問伺服器地址驗證成功,在我們專案裡開始使用私服之前先了解一下maven依賴順序,也就是mavne下載檔案訪問倉庫的順序。

  1. 本地倉庫查詢,找得到引入到專案,找不到執行下一步。
  2. 未設定遠端倉庫時,進行中央倉庫搜尋(maven官方提供的一號倉庫)找得到下載到本地倉庫後引入到專案,找不到給出錯誤資訊。
  3. 若設定了遠端倉庫則按配置遠端倉庫地址的順序下載到本地後引入到專案,同樣找不到給出錯誤資訊。

上面第三條提到按配置遠端倉庫地址的順序進行搜尋下載。下面簡要說明下:

  • settings_mirror 的優先順序高於central
  • settings_profile_repo 優先順序高於 settings_mirror
  • settings_profile_repo 優先順序高於 pom_repositories
  • settings_profile_repo 優先順序高於 pom_profile_repo
  • pom_profile_repo 優先順序高於 pom_repositories
  • pom_repositories 優先順序高於 settings_mirror

最後搜素順序如下:
local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

(對比著配置檔案的節點名稱來看更容易理解些)

看完上面這些內容後,我們開始在專案中配置maven私服吧。

一、maven私服配置資訊

地址:http://ip:8081(搭建maven私服的地址)
管理帳號:admin 管理密碼:123456 (登入私服的賬號、密碼)
發包帳號:maven 發包密碼:123456 (為了安全起見,使用管理賬號單獨建立的賬號密碼用於發包使用)

二、maven私服使用

普通專案成員即不需要向私服釋出包的,只需要在 pom 檔案中加入以下配置即可

<repositories>   
    <repository>      
        <id>maven-public</id>      
        <name>maven-public</name>
        <url>http://ip:8081/repository/maven-public/</url>     
        <releases>          
            <enabled>true</enabled>      
       </releases>     
       <snapshots>        
            <enabled>true</enabled>
       </snapshots>   
   </repository>
</repositories>

配置說明:
其中 id 要和你的倉庫名稱一致,url 就是私服的倉庫地址,就是type 為 group 的那個,它組合了一個 proxy 型別的和兩個 hosted 型別的倉庫。設定 snapshots 的 enabled 為ture,表示允許下載 snapshots 版本的包。
引用私服中的jar包:

<dependencies>   
    <dependency>      
        <groupId>com.wangms.commons</groupId>      
        <artifactId>commons-utils</artifactId>      
        <version>1.0.0</version>   
    </dependency>
</dependencies>

三、釋出公共資源包到maven私服:

向私服倉庫中釋出包,首先需要對倉庫有許可權才可以,沒有許可權的使用者是沒辦法釋出的。
開啟 maven 的配置檔案 setting.xml ,找到 servers 節點在其中新增 server 節點,使用者名稱和密碼也可以是管理員建立的賬號,但是需要對倉庫有新增許可權。

配置本地maven settings.xml
提示:兩種配置方法

  1. 直接配置maven目錄下的conf下的settings.xml檔案。
  2. 複製該檔案到使用者目錄下的.m2目錄,兩種方法配置效果是一樣的,看個人喜好了,載入順序是.m2下的settings.xml目錄接著是maven config目錄下的settings.xml。
<servers>    
    <server>        
        <id>releases</id>        
        <username>maven</username>
        <password>123456</password>    
    </server>    
    <server>        
        <id>snapshots</id>        
        <username>maven</username>
        <password>123456</password>    
    </server>  
</servers> 
<mirrors> 
    <mirror>    
        <id>nexus</id>  
        <name>internal nexus repository</name>       
        <!--映象採用配置好的組的地址-->
        <url>http://ip:8081/repository/maven-public/</url>
        <mirrorOf>!internal.repo,*</mirrorOf>  
    </mirror>  
</mirrors>

配置需要上傳到私服上的專案pom.xml配置資訊

<distributionManagement>
    <!--配置線上releases倉庫地址,只要是正式版本都會上傳到該地址
    (注意要和settings.xml檔案裡面的配置名稱相同)--> 
    <repository>
        <id>releases</id> 
        <name>Releases</name>
        <url>http://ip:8081/repository/maven-releases/</url>
    </repository>
<!--配置線上snapshots倉庫地址,只要是快照版本都會上傳到該地址
(注意要和settings.xml檔案裡面的配置名稱相同)-->
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshot</name>
            <url>http://ip:8081//repository/maven-snapshots/</url>
        </snapshotRepository>
</distributionManagement>

特別說明:
當pom.xml中同時配置了releases倉庫和snapshots倉庫時。

  • pom.xml檔案開頭的版本配置1.0.0-SNAPSHOT為build到snapshots庫,
  • pom.xml檔案開頭的版本配置1.0.0 (不帶-SNAPSHOT) 的會build到releases庫,

如果只配置了releases庫而版本號寫的是帶-SNAPSHOT的,build到最後一步會報400錯誤,因為它找不到對應的庫。

四、maven打包命令:

公共資源jar包釋出到maven私服命令如下:

mvn clean deploy 

擴充套件知識點:

  • package命令完成了專案編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠端maven私服倉庫
  • install命令完成了專案編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫,但沒有佈署到遠端maven私服倉庫
  • deploy命令完成了專案編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)佈署到本地maven倉庫和遠端maven私服倉庫

Maven私服的搭建和使用相關的系列文章共三篇,歡迎閱讀
Maven知識記錄(一)初識Maven私服
Maven知識記錄(二)使用Nexus搭建Maven私服
Maven知識記錄(三)專案中使用maven私服