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私服
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/116767.html
標籤:Java
上一篇:Maven知識記錄(二)使用Nexus搭建Maven私服
下一篇:Java自學-JDBC ORM
