Maven知識記錄(三)項目中使用maven私服

Maven知識記錄(三)項目中使用maven私服

如何在項目的pom中使用maven私服

在上一篇文章中已將nexus搭建完成。訪問服務器地址驗證成功,在咱們項目裏開始使用私服以前先了解一下maven依賴順序,也就是mavne下載文件訪問倉庫的順序。html

  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

1、maven私服配置信息

地址:http://ip:8081(搭建maven私服的地址)
管理賬號:admin 管理密碼:123456 (登陸私服的帳號、密碼)
發包賬號:maven 發包密碼:123456 (爲了安全起見,使用管理帳號單首創建的帳號密碼用於發包使用)單元測試

2、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包:ui

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

3、發佈公共資源包到maven私服:

向私服倉庫中發佈包,首先須要對倉庫有權限才能夠,沒有權限的用戶是沒辦法發佈的。
打開 maven 的配置文件 setting.xml ,找到 servers 節點在其中添加 server 節點,用戶名和密碼也能夠是管理員建立的帳號,可是須要對倉庫有添加權限。url

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

  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配置信息server

<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錯誤,由於它找不到對應的庫。

4、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私服

相關文章
相關標籤/搜索