Maven - 5、私服详解
1、環境
maven3.6.1
開發工具idea
jdk1.8
2、私服介紹
私服也是遠程倉庫中的一種,我們為什么需要私服呢?
如果我們一個團隊中有幾百個人在開發一些項目,都是采用maven的方式來組織項目,那么我們每個人都需要從遠程倉庫中把需要依賴的構件下載到本地倉庫,這對公司的網絡要求也比較高,為了節省這個寬帶和加快下載速度,我們在公司內部局域網內部可以架設一臺服務器,這臺服務器起到一個代理的作用,公司里面的所有開發者去訪問這個服務器,這臺服務器將需要的構件返回給我們,如果這臺服務器中也沒有我們需要的構件,那么這個代理服務器會去遠程倉庫中查找,然后將其先下載到代理服務器中,然后再返回給開發者本地的倉庫。
還有公司內部有很多項目之間會相互依賴,你可能是架構組的,你需要開發一些jar包給其他組使用,此時,我們可以將自己jar發布到私服中給其他同事使用,如果沒有私服,可能需要我們手動發給別人或者上傳到共享機器中,不過管理起來不是很方便。
總體上來說私服有以下好處:
加速maven構件的下載速度
節省寬帶,加速項目構建速度
方便部署自己的構件以供他人使用
提高maven的穩定性,中央倉庫需要本機能夠訪問外網,而如果采用私服的方式,只需要本機可以訪問內網私服就可以了
有3種專門的maven倉庫管理軟件可以用來幫助我們搭建私服:
Apache基金會的archiva
http://archiva.apache.org/JFrog的Artifactory
https://jfrog.com/artifactory/Sonatype的Nexus
https://my.sonatype.com/這些都是開源的私服軟件,都可以自由使用。用的最多的是第三種Nexus,本文我們主要以這個來講解,其他2種有興趣的朋友可以去研究一下。
3、Windows10中安裝Nexus私服
nexus是java開發的,所以運行的時候需要有java環境的支持。
3.1、安裝jdk
windows安裝jdk此處不在贅述
3.2、下載nexus
下面提供兩種下載方式:官網下載、百度網盤下載,百度網盤速度會快一些。
官網和百度網盤中都包含了windows、linux、mac版本nexus安裝文件。
建議大家使用網盤中的資源,保持和本文環境一致,可以避免出錯。
3.2.1、nexus下載地址
https://help.sonatype.com/repomanager3/download3.2.2、百度網盤下載地址
鏈接: https://pan.baidu.com/s/1nUs-C_O55B5rJuLyHqxJAg 提取碼: 6666 復制這段內容后打開百度網盤手機App,操作更方便哦3.3、解壓latest-win64.zip
latest-win64.zip解壓之后會產生兩個文件目錄nexus-3.19.1-01和sonatyp-work
3.4、啟動nexus
cmd中直接運行nexus-3.19.1-01/bin/nexus.exe /run?,如下:
D:\installsoft\maven\nexus\nexus-3.19.1-01\bin>nexus.exe?/run如果輸出中出現了下面的異常請忽略
java.io.UnsupportedEncodingException:?Encoding?GBK?is?not?supported?yet?(feel?free?to?submit?a?patch)瀏覽器中打開
http://localhost:8081/效果如下:
3.5、登錄Nexus
點擊上圖右上角的Sign in,輸入用戶名和密碼,nexus默認用戶名是admin
nexus這個版本的密碼是第一次啟動的時候生成的,密碼位于下面的文件中:
安裝目錄/sonatype-work/nexus3/admin.password登錄成功后會彈出一些設置,如下:
點擊Next,設置新的登錄密碼(新密碼要保存好),如下:
點擊Next->Finish完成設置。
3.6、其他一些常見的操作
3.6.1、停止Nexus的命令
啟動的cmd窗口中按:ctrl+c,可以停止Nexus。
3.6.2、修改啟動端口
默認端口是8081,如果和本機有沖突,可以在下面的文件中修改:
nexus-3.19.1-01\etc\nexus-default.propertiesnexus使用java開發的web項目,內置了jetty web容器,所以可以直接運行。
4、Linux安裝Nexus私服
4.1、下載安裝包
百度網盤中下載linux版本的nexus安裝包,選擇latest-unix.tar.gz文件,下載地址如下:
鏈接: https://pan.baidu.com/s/1nUs-C_O55B5rJuLyHqxJAg 提取碼: 6666 復制這段內容后打開百度網盤手機App,操作更方便哦將上面的安裝包放在/opt/nexus/目錄。
4.2、解壓
[root@test1117?nexus]#?tar?-zvxf?latest-unix.tar.gz [root@test1117?nexus]#?ls latest-unix.tar.gz??nexus-3.19.1-01??sonatype-work4.3、啟動
[root@test1117?bin]#?/opt/nexus/nexus-3.19.1-01/bin/nexus?start WARNING:?************************************************************ WARNING:?Detected?execution?as?"root"?user.??This?is?NOT?recommended! WARNING:?************************************************************ Starting?nexus我上面使用的是root用戶操作的,為了安全性,你們最好自己創建個用戶來操作。
4.4、開放端口
在/etc/sysconfig/iptables文件中加入下面內容:
-A?INPUT?-p?tcp?-m?state?--state?NEW?-m?tcp?--dport?8081?-j?ACCEPT執行下面命令,讓上面配置生效:
[root@test1117?bin]#?service?iptables?restart Redirecting?to?/bin/systemctl?restart??iptables.service4.5、驗證效果
訪問
http://nexus私服所在的機器ip:8081/出現下面效果表示一切ok。
4.6、登錄
用戶名為admin,密碼在
/opt/nexus/sonatype-work/nexus3/admin.password登錄之后請請立即修改密碼。
5、Nexus中倉庫分類
前面我們說過,用戶可以通過nexus去訪問遠程倉庫,可以將本地的構件發布到nexus中,nexus是如何支撐這些操作的呢?
nexus中有個倉庫列表,里面包含了各種各樣的倉庫,有我們說的被代理的第三方遠程倉庫,如下圖:
上圖中是nexus安裝好默認自帶的倉庫列表,主要有3種類型:
代理倉庫
宿主倉庫
倉庫組
5.1、代理倉庫
代理倉庫主要是讓使用者通過代理倉庫來間接訪問外部的第三方遠程倉庫的,如通過代理倉庫訪問maven中央倉庫、阿里的maven倉庫等等。代理倉庫會從被代理的倉庫中下載構件,緩存在代理倉庫中以供maven用戶使用。
我們在nexus中創建一個阿里云的maven代理倉庫來看下過程如下。
Nexus倉庫列表中點擊Create repository按鈕,如下圖:
進入添加頁面,選擇maven2(proxy),這個表示代理倉庫,如下圖:
輸入遠程倉庫的信息,如下圖:
第一個紅框中輸入倉庫名稱:maven-aliyun第二個紅框選擇:Release,表示從這個倉庫中下載穩定版的構件第三個紅框輸入阿里云倉庫地址:https://maven.aliyun.com/repository/public點擊底部的Create repository按鈕,創建完成,如下圖:
5.2、宿主倉庫
宿主倉庫主要是給我們自己用的,主要有2點作用
將私有的一些構件通過nexus中網頁的方式上傳到宿主倉庫中給其他同事使用
將自己開發好一些構件發布到nexus的宿主倉庫中以供其他同事使用
上面這2種操作,一會稍后會詳解以及演示操作過程。
5.3、倉庫組
maven用戶可以從代理倉庫和宿主倉庫中下載構件至本地倉庫,為了方便從多個代理倉庫和宿主倉庫下載構件,maven提供了倉庫組,倉庫組中可以有多個代理倉庫和宿主倉庫,而maven用戶只用訪問一個倉庫組就可以間接的訪問這個組內所有的倉庫,倉庫組中多個倉庫是有順序的,當maven用戶從倉庫組下載構件時,倉庫組會按順序依次在組內的倉庫中查找組件,查找到了立即返回給本地倉庫,所以一般情況我們會將速度快的放在前面。
倉庫組內部實際上是沒有構件內容的,他只是起到一個請求轉發的作用,將maven用戶下載構件的請求轉發給組內的其他倉庫處理。
nexus默認有個倉庫組maven-public,如下:
點擊一下maven-public這行記錄,進去看一下,如下圖:
上圖中第一個紅框是這個倉庫組對外的一個url,我們本地的maven可以通過這個url來從倉庫組中下載構件至本地倉庫。
第二個紅框中是這個倉庫組中的成員,目前包含了3個倉庫,第1個是宿主的releases版本倉庫,第1個是宿主快照版本的倉庫,第3個是代理倉庫(maven社區中央倉庫的代理)。
剛才我們新增的maven-aliyun在左邊,我們將其也加到右邊的倉庫成員(Members)列表,然后將maven-aliyun這個倉庫放在第3個位置,這個倉庫的速度比maven-central要快一些,能加速我們下載maven構件的速度,如下圖:
6、配置本地Maven從nexus下載構件
介紹2種方式
6.1、方式1:pom.xml的方式
本次我們就從nexus默認倉庫組中下載構件,先獲取倉庫組對外的地址,點擊下圖中的copy按鈕,獲取倉庫組的地址:
修改pom.xml,加入如下內容:
注意下面url的地址為上面復制的地址。
<repositories><repository><id>maven-nexus</id><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository> </repositories>由于nexus私服需要有用戶名和密碼登錄才能訪問,所以需要有憑證,憑證需要在settings.xml文件中配置,在~/.m2/settings.xml文件的servers元素中加入如下內容:
<server><id>maven-nexus</id><username>admin</username><password>admin123</password> </server>注意上面的server->id的值和pom.xml中repository->id的值一致,通過這個id關聯找到憑證的。
server元素中的username和password你們根據自己的去編輯,我這邊密碼設置的是admin123
6.1.1、方式1示例
創建一個maven項目,打開idea,點擊File->New->Project,選擇Maven,如下:
點擊Next,輸入項目坐標信息,如下:
點擊Next,輸入Project name 為maven-chat05,如下:
點擊Finish,創建成功,如下:
配置一下idea的maven環境,點擊File->Settings,如下圖:
點擊上面的OK完成配置。
還原~/.m2/settings.xml的配置到初始狀態,操作如下:
將M2_HOME/conf/settings.xml復制熬~/.m2/settings.xml目錄,如果存在先備份一個,然后進行覆蓋。修改上面idea項目中的pom.xml文件,內容如下:
<?xml?version="1.0"?encoding="UTF-8"?> <project?xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.javacode2018</groupId><artifactId>maven-chat05</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies><repositories><repository><id>maven-nexus</id><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></project>刪除本地倉庫中以下幾個目錄:
~\.m2\repository\com\alibabamaven-chat05項目目錄中打開cmd運行:
mvn?compile見證奇跡的時刻,輸出如下:
D:\code\IdeaProjects\maven-chat05>mvn?compile [INFO]?Scanning?for?projects... [INFO] [INFO]?-------------------<?com.javacode2018:maven-chat05?>-------------------- [INFO]?Building?maven-chat05?1.0-SNAPSHOT [INFO]?--------------------------------[?jar?]--------------------------------- Downloading?from?maven-nexus:?http://localhost:8081/repository/maven-public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.pom Downloaded?from?maven-nexus:?http://localhost:8081/repository/maven-public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.pom?(9.7?kB?at?5.1?kB/s) Downloading?from?maven-nexus:?http://localhost:8081/repository/maven-public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.jar Downloaded?from?maven-nexus:?http://localhost:8081/repository/maven-public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.jar?(658?kB?at?70?kB/s) [INFO] [INFO]?---?maven-resources-plugin:2.6:resources?(default-resources)?@?maven-chat05?--- [WARNING]?Using?platform?encoding?(GBK?actually)?to?copy?filtered?resources,?i.e.?build?is?platform?dependent! [INFO]?Copying?0?resource [INFO] [INFO]?---?maven-compiler-plugin:3.1:compile?(default-compile)?@?maven-chat05?--- [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO]?------------------------------------------------------------------------ [INFO]?BUILD?SUCCESS [INFO]?------------------------------------------------------------------------ [INFO]?Total?time:??16.083?s [INFO]?Finished?at:?2019-11-13T15:45:44+08:00 [INFO]?------------------------------------------------------------------------從輸出中可以看出fastjson這個jar包從maven-nexus中下載了,下載地址正是我們nexus私服中的那個地址。
6.2、方式2:鏡像方式
關于什么是鏡像,這里就不在做說明了,上篇文章中有介紹,可以移步過去看一下:倉庫詳解
鏡像的方式主要修改~/.m2/setting.xml文件,需要修改2處理。
第1處:setting.xml的mirrors元素中加入如下配置:
<mirror><id>mirror-nexus</id><mirrorOf>*</mirrorOf><name>nexus鏡像</name><url>http://localhost:8081/repository/maven-public/</url> </mirror>上面mirrorOf配置的*,說明所有遠程倉庫都通過該鏡像下載構件。
url:這個為nexus中倉庫組的地址,上面方式一中有說過。
第2處:由于nexus的url是需要用戶名和密碼才可以訪問的,所以需要配置訪問憑證,在`~/.m2/settings.xml`文件的`servers`元素中加入如下內容:
<server><id>mirror-nexus</id><username>admin</username><password>admin123</password> </server>注意上面的server->id的值和mirror->id的值需要一致,這樣才能找到對應的憑證。
6.2.1、方式2示例
還是以方式1中的maven項目maven-chat05為例。
修改pom.xml,內容如下:
<?xml?version="1.0"?encoding="UTF-8"?> <project?xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.javacode2018</groupId><artifactId>maven-chat05</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies></project>~/.m2/settings.xml的servers元素中加入下面內容:
<server><id>mirror-nexus</id><username>admin</username><password>admin123</password> </server>注意上面username、password根據你們自己的進行配置。
~/.m2/settings.xml的mirrors元素中加入下面內容:
<mirror><id>mirror-nexus</id><mirrorOf>*</mirrorOf><name>nexus鏡像</name><url>http://localhost:8081/repository/maven-public/</url> </mirror>刪除本地倉庫中以下幾個目錄:
~\.m2\repository\com\alibabamaven-chat05項目目錄中打開cmd運行:
mvn?compile見證奇跡的時刻,輸出如下:
D:\code\IdeaProjects\maven-chat05>mvn?compile [INFO]?Scanning?for?projects... [INFO] [INFO]?-------------------<?com.javacode2018:maven-chat05?>-------------------- [INFO]?Building?maven-chat05?1.0-SNAPSHOT [INFO]?--------------------------------[?jar?]--------------------------------- Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom?(0?B?at?0?B/s) Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom?(0?B?at?0?B/s) Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/maven-parent/22/maven-parent-22.pom Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/maven-parent/22/maven-parent-22.pom?(0?B?at?0?B/s) Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/apache/11/apache-11.pom Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/apache/11/apache-11.pom?(0?B?at?0?B/s) Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar?(0?B?at?0?B/s) Downloading?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-compiler-plugin/3.1/maven-compiler-plugin-3.1.pom Downloaded?from?mirror-nexus:?http://localhost:8081/repository/maven-public/org/apache/maven/plugins/maven-compiler-plugin/3.1/maven-compiler-plugin-3.1.pom?(0?B?at?0?B/s) [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO]?------------------------------------------------------------------------ [INFO]?BUILD?SUCCESS [INFO]?------------------------------------------------------------------------ [INFO]?Total?time:??02:23?min [INFO]?Finished?at:?2019-11-13T16:05:43+08:00 [INFO]?------------------------------------------------------------------------輸出內容比較多,只截取了部分輸出,從輸出中可以看出fastjson這個jar包從mirror-nexus中下載了,下載地址正是我們nexus私服中的那個地址,鏡像的方式起效了,是不是感覺很爽,哈哈!
7、本地構件發布到私服?
經常用到的有2種
使用maven部署構件至nexus私服
手動部署第三方構件至nexus私服:比如我們第三方發給我們的一個包,比如短信發送商的jar包,這個包遠程倉庫是不存在的,我們要把這個包上傳到私服供所有開發使用。
下面我們來看一下這兩種如何操作。
7.1、使用maven部署構件至nexus私服
我們創建maven項目的時候,會有一個pom.xml文件,里面有個version元素,這個是這個構件的版本號,可以去看一下上面我們剛創建的maven-chat05,默認是1.0-SNAPSHOT,這個以-SNAPSHOT結尾的表示是個快照版本,叫做SNAPSHOT版本,快照版本一般是不穩定的,會反復發布、測試、修改、發布。而最終會有一個穩定的可以發布的版本,是沒有-SNAPSHOT后綴的,這個叫做release版本。
而nexus私服中存儲用戶的構件是使用的宿主倉庫,這個我們上面也有說過,nexus私服中提供了兩個默認的宿主倉庫分別用來存放SNAPSHOT版本和release版本,如下圖:
上圖中第1個紅框的maven-releases宿主倉庫用來存放用戶自己release版本的構件。
第2個紅框的maven-snapshots宿主倉庫用來存放用戶snapshot版本的構件。
上面兩個倉庫的地址可以點擊后面的copy按鈕獲取。
操作分為3步
7.1.1、第一步:修改pom.xml配置
我們需要將本地maven項目的構件發布到上面宿主倉庫中,需要修改項目中pom.xml的配置,加入下面內容:
<distributionManagement><repository><id>release-nexus</id><url>http://localhost:8081/repository/maven-releases/</url><name>nexus私服中宿主倉庫->存放/下載穩定版本的構件</name></repository><snapshotRepository><id>snapshot-nexus</id><url>http://localhost:8081/repository/maven-snapshots/</url><name>nexus私服中宿主倉庫->存放/下載快照版本的構件</name></snapshotRepository> </distributionManagement>上面2個url分別是上圖中兩個宿主倉庫的地址。
7.1.2、第二步:修改settings.xml
上面地址需要登錄才可以訪問,所以需要配置憑證,這個需要在~/.m2/settings.xml中進行配置,在這個文件的servers元素中加入:
<server><id>release-nexus</id><username>admin</username><password>admin123</password> </server><server><id>snapshot-nexus</id><username>admin</username><password>admin123</password> </server>注意上面第1個server->id的值需要和pom.xml中的distributionManagement->repository->id的值一致。
第2個server->id的值需要和pom.xml中的distributionManagement->snapshotRepository->id的值一致。
7.1.3、第三步:執行`mvn deploy`命令
執行這個命令的時候,會對構件進行打包,然后上傳到私服中。
這命令的原理,后面的文章中會具體介紹。
示例效果
我們來感受一下效果。
按照上面的配置修改maven-chat03/pom.xml文件和本地的~/.m2/settings.xml文件。
maven-chat05項目目錄中打開cmd運行:
mvn?deploy見證奇跡的時刻,輸出如下:
D:\code\IdeaProjects\maven-chat05>mvn?deploy [INFO]?Scanning?for?projects... [INFO] [INFO]?-------------------<?com.javacode2018:maven-chat05?>-------------------- [INFO]?Building?maven-chat05?1.0-SNAPSHOT [INFO]?--------------------------------[?jar?]--------------------------------- [INFO] [INFO]?---?maven-resources-plugin:2.6:resources?(default-resources)?@?maven-chat05?--- [WARNING]?Using?platform?encoding?(GBK?actually)?to?copy?filtered?resources,?i.e.?build?is?platform?dependent! [INFO]?Copying?0?resource [INFO] [INFO]?---?maven-compiler-plugin:3.1:compile?(default-compile)?@?maven-chat05?--- [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO] [INFO]?---?maven-resources-plugin:2.6:testResources?(default-testResources)?@?maven-chat05?--- [WARNING]?Using?platform?encoding?(GBK?actually)?to?copy?filtered?resources,?i.e.?build?is?platform?dependent! [INFO]?skip?non?existing?resourceDirectory?D:\code\IdeaProjects\maven-chat05\src\test\resources [INFO] [INFO]?---?maven-compiler-plugin:3.1:testCompile?(default-testCompile)?@?maven-chat05?--- [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO] [INFO]?---?maven-surefire-plugin:2.12.4:test?(default-test)?@?maven-chat05?--- [INFO]?No?tests?to?run. [INFO] [INFO]?---?maven-jar-plugin:2.4:jar?(default-jar)?@?maven-chat05?--- [INFO] [INFO]?---?maven-install-plugin:2.4:install?(default-install)?@?maven-chat05?--- [INFO]?Installing?D:\code\IdeaProjects\maven-chat05\target\maven-chat05-1.0-SNAPSHOT.jar?to?C:\Users\Think\.m2\repository\com\javacode2018\maven-chat05\1.0-SNAPSHOT\maven-chat05-1.0-SNAPSHOT.jar [INFO]?Installing?D:\code\IdeaProjects\maven-chat05\pom.xml?to?C:\Users\Think\.m2\repository\com\javacode2018\maven-chat05\1.0-SNAPSHOT\maven-chat05-1.0-SNAPSHOT.pom [INFO] [INFO]?---?maven-deploy-plugin:2.7:deploy?(default-deploy)?@?maven-chat05?--- Downloading?from?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-metadata.xml Uploading?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-chat05-1.0-20191113.083820-1.jar Uploaded?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-chat05-1.0-20191113.083820-1.jar?(1.8?kB?at?11?kB/s) Uploading?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-chat05-1.0-20191113.083820-1.pom Uploaded?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-chat05-1.0-20191113.083820-1.pom?(1.2?kB?at?10?kB/s) Downloading?from?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/maven-metadata.xml Uploading?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-metadata.xml Uploaded?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/1.0-SNAPSHOT/maven-metadata.xml?(772?B?at?9.2?kB/s) Uploading?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/maven-metadata.xml Uploaded?to?snapshot-nexus:?http://localhost:8081/repository/maven-snapshots/com/javacode2018/maven-chat05/maven-metadata.xml?(286?B?at?3.4?kB/s) [INFO]?------------------------------------------------------------------------ [INFO]?BUILD?SUCCESS [INFO]?------------------------------------------------------------------------ [INFO]?Total?time:??6.156?s [INFO]?Finished?at:?2019-11-13T16:38:20+08:00 [INFO]?------------------------------------------------------------------------輸出內容中有Uploading to snapshot-nexus、Uploaded to snapshot-nexus?,snapshot-nexus正是我們在pom.xml配置的快照版本的地址,上面輸出內容中有具體的地址,和快照的地址也是一樣的,上傳成功了。
我們去nexus私服中看一下,訪問nexus私服中快照版本倉庫的地址:
http://localhost:8081/repository/maven-snapshots/出現如下頁面:
點擊上面的bowse連接,如下圖,我們的構件上傳成功了:
如果其他同事需要使用上面這個構件,只需要點擊下圖中的pom文件,右邊會顯示構件的坐標,然后可以拿去使用了,如下圖:
上面是將快照版本的發布到了nexus私服的快照宿主倉庫了,下面我們再來操作一下將release穩定版本的發布到nexus私服,如下:
修改pom.xml文件的版本號,將-SNAPSHOT后綴去掉,去掉之后表示是release版本的了,如下:
<version>1.0</version>cmd命令中執行:
mvn?deploy輸出:
D:\code\IdeaProjects\maven-chat05>mvn?deploy [INFO]?Scanning?for?projects... [INFO] [INFO]?-------------------<?com.javacode2018:maven-chat05?>-------------------- [INFO]?Building?maven-chat05?1.0 [INFO]?--------------------------------[?jar?]--------------------------------- [INFO] [INFO]?---?maven-resources-plugin:2.6:resources?(default-resources)?@?maven-chat05?--- [WARNING]?Using?platform?encoding?(GBK?actually)?to?copy?filtered?resources,?i.e.?build?is?platform?dependent! [INFO]?Copying?0?resource [INFO] [INFO]?---?maven-compiler-plugin:3.1:compile?(default-compile)?@?maven-chat05?--- [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO] [INFO]?---?maven-resources-plugin:2.6:testResources?(default-testResources)?@?maven-chat05?--- [WARNING]?Using?platform?encoding?(GBK?actually)?to?copy?filtered?resources,?i.e.?build?is?platform?dependent! [INFO]?skip?non?existing?resourceDirectory?D:\code\IdeaProjects\maven-chat05\src\test\resources [INFO] [INFO]?---?maven-compiler-plugin:3.1:testCompile?(default-testCompile)?@?maven-chat05?--- [INFO]?Nothing?to?compile?-?all?classes?are?up?to?date [INFO] [INFO]?---?maven-surefire-plugin:2.12.4:test?(default-test)?@?maven-chat05?--- [INFO]?No?tests?to?run. [INFO] [INFO]?---?maven-jar-plugin:2.4:jar?(default-jar)?@?maven-chat05?--- [INFO]?Building?jar:?D:\code\IdeaProjects\maven-chat05\target\maven-chat05-1.0.jar [INFO] [INFO]?---?maven-install-plugin:2.4:install?(default-install)?@?maven-chat05?--- [INFO]?Installing?D:\code\IdeaProjects\maven-chat05\target\maven-chat05-1.0.jar?to?C:\Users\Think\.m2\repository\com\javacode2018\maven-chat05\1.0\maven-chat05-1.0.jar [INFO]?Installing?D:\code\IdeaProjects\maven-chat05\pom.xml?to?C:\Users\Think\.m2\repository\com\javacode2018\maven-chat05\1.0\maven-chat05-1.0.pom [INFO] [INFO]?---?maven-deploy-plugin:2.7:deploy?(default-deploy)?@?maven-chat05?--- Uploading?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/1.0/maven-chat05-1.0.jar Uploaded?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/1.0/maven-chat05-1.0.jar?(1.7?kB?at?9.6?kB/s) Uploading?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/1.0/maven-chat05-1.0.pom Uploaded?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/1.0/maven-chat05-1.0.pom?(1.2?kB?at?12?kB/s) Downloading?from?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/maven-metadata.xml Uploading?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/maven-metadata.xml Uploaded?to?release-nexus:?http://localhost:8081/repository/maven-releases/com/javacode2018/maven-chat05/maven-metadata.xml?(304?B?at?4.3?kB/s) [INFO]?------------------------------------------------------------------------ [INFO]?BUILD?SUCCESS [INFO]?------------------------------------------------------------------------ [INFO]?Total?time:??5.646?s [INFO]?Finished?at:?2019-11-13T16:48:44+08:00 [INFO]?------------------------------------------------------------------------輸出中有release-nexus,說明使用了pom.xml中的distributionManagement->repository->id的值,上傳地址是http://localhost:8081/repository/maven-releases。
打開nexus私服中release地址:
http://localhost:8081/repository/maven-releases/點擊上面的browse連接,如下:
成功了,是不是感覺很爽。
7.2、手動部署構件至nexus私服
操作步驟
手動上傳只支持發布穩定版本的構件,操作過程如下圖:
登錄nexus,按照下圖的步驟依次點擊:
圖中第一行maven-releases宿主倉庫就是存放用戶自己構件的倉庫,點擊上圖中列表中的第一行,進入上傳頁面,如下圖:
上面頁面中點擊Browse選擇本地的構件,然后輸入其他坐標信息,點擊Upload完成上傳操作。
示例效果
我們把maven-chat05\target\maven-chat05-1.0.jar上傳上去,如下:
點擊Upload完成上傳操作。
訪問如下地址:
http://localhost:8081/#browse/browse:maven-releases可以看到上傳好的構件,如下圖:
8、總結
本文90%是實操部分,強烈建議大家去操作一遍,加深理解。如果有收獲的幫忙分享一下,你們的支持也是我不斷輸出的一個動力,希望大家都能夠學到東西!
總結
以上是生活随笔為你收集整理的Maven - 5、私服详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用CloudCompare渲染好看的油
- 下一篇: 服装库存尺码保存