Maven知識記錄(三)項目中使用maven私服
如何在項目的pom中使用maven私服
在上一篇文章中已將nexus搭建完成。訪問服務器地址驗證成功,在我們項目里開始使用私服之前先了解一下maven依賴順序,也就是mavne下載文件訪問倉庫的順序。
- 本地倉庫查找,找得到引入到項目,找不到執行下一步。
- 未設置遠程倉庫時,進行中央倉庫搜索(maven官方提供的一號倉庫)找得到下載到本地倉庫后引入到項目,找不到給出錯誤信息。
- 若設置了遠程倉庫則按配置遠程倉庫地址的順序下載到本地后引入到項目,同樣找不到給出錯誤信息。
上面第三條提到按配置遠程倉庫地址的順序進行搜索下載。下面簡要說明下:
- 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
提示:兩種配置方法
- 直接配置maven目錄下的conf下的settings.xml文件。
- 復制該文件到用戶目錄下的.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私服