使用專門的Maven倉庫管理軟件Nexus構建Maven私服。
nexus下載地址
https://www.sonatype.com/download-oss-sonatype
啟動nexus服務
管理員身份運行cmd,切換到目錄D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\bin(以我自己的存放目錄舉例子)
1.???方式一,nexus.exe /run 命令可以啟動nexus服務;
2.???方式二,以本地服務來安裝啟動nexus;
D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\bin>nexus.exe /install //安裝nexus服務 Installedservice 'nexus'
D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\bin>nexus.exe /uninstall //卸載nexus服務 Servicesis already stoped Uninstalledservice 'nexus' D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\bin>net start nexus //啟動nexus服務 nexus 服務已經啟動成功 D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\bin\bin>net stop nexus //關閉nexus服務 nexus 服務正在停止.. nexus 服務已經成功停止
服務啟動之后打開瀏覽器,輸入http://127.0.0.1:8081/ 端口沒被使用過的情況下,直接輸入ip+8081端口,就可以打開nexus主頁
修改默認端口
D:\nexus-3.15.1-01-win64\nexus-3.15.1-01\etc\nexus-default.properties 編輯可以修改端口
application-host : Nexus服務監聽的主機 application-port: Nexus服務監聽的端口, nexus-context-path : Nexus服務的上下文路徑 通常可以不做任何修改,主機可以改為application-host 為127.0.0.1(關于0.0.0.0與127.0.0.1的區別自行檢索)
主頁如下
登錄之后就可以查看私服了。登錄以后,最上面會有兩個按鈕,一個是查看倉庫配置的(齒輪形狀),另一個是查看倉庫內容的(正方體), 通過點擊左側的browse來瀏覽倉庫
點擊倉庫配置按鈕進入倉庫管理
Type倉庫類型
group(倉庫組類型):又叫組倉庫,用于方便開發人員自己設定的倉庫;
hosted(宿主類型):內部項目的發布倉庫(內部開發人員,發布上去存放的倉庫);
proxy(代理類型):從遠程中央倉庫中尋找數據的倉庫(可以點擊對應的倉庫的Configuration頁簽下Remote Storage Location屬性的值即被代理的遠程倉庫的路徑);
virtual(虛擬類型):虛擬倉庫(這個基本用不到,重點關注上面三個倉庫的使用);
Format倉庫格式
maven2
nuget(.net倉庫)
Name
maven-central:maven中央庫,默認從https://repo1.maven.org/maven2/拉取jar
maven-releases:私庫發行版jar
maven-snapshots:私庫快照jar
maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml中使用。
Maven使用倉庫的圖解
從圖中可以看出,Maven可以從宿主倉庫下載構件,也可以從代理倉庫間接下載緩存構件,倉庫組是一個虛擬倉庫,最后實際會從組成倉庫組的宿主倉庫或者代理倉庫下載構件。
創建宿主倉庫
點擊創建倉庫按鈕,選擇倉庫格式Maven2(hosted)
項目中Maven集成nexus
只要在PMO文件中配置私服的地址(比如http://192.168.1.161:8081)即可,配置如下:
<repositories>
? ? <repository>
? ? ? ? <id>maven-central</id>
? ? ? ? <name>maven-central</name>
? ? ? ? <url>http://192.168.1.161:8081/repository/maven-central/</url>
? ? ? ? <snapshots>
? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? </snapshots>
? ? ? ? <releases>
? ? ? ? ? ? <enabled>true</enabled>
? ? ? ? </releases>
? ? </repository>
</repositories>
項目中打包項目上nexus對應的倉庫
在項目pom文件中配置
<!--定義snapshots庫和releases庫的nexus地址-->?
<distributionManagement>?
? ? <repository>?
? ? ? ? <id>nexus-releases</id>?
? ? ? ? <url>?
? ? ? ? ? ? http://172.17.103.59:8081/nexus/content/repositories/releases/?
? ? ? ? </url>?
? ? </repository>?
? ? <snapshotRepository>?
? ? ? ? <id>nexus-snapshots</id>?
? ? ? ? <url>?
? ? ? ? ? ? http://172.17.103.59:8081/nexus/content/repositories/snapshots/?
? ? ? ? </url>?
? ? </snapshotRepository>?
</distributionManagement>?
如果發布時使用mvn deploy命令,版本號類似0.1-SNAPSHOT,此時maven會認為是快照版本,會自動發布到快照版本庫 relases的會發布到relases倉庫。 在distributionManagement段中配置的是snapshot快照庫和release發布庫的地址,這里是采用nexus作為鏡像服務器。對于版本庫主要是id和url的配置,配置完成后就可以通過mvn deploy進行發布了,當然了,如果你的鏡像服務器需要用戶名和密碼,那么還需要在maven的settings.xml文件中做如下配置:
<server>?
? <id>nexus-releases</id>?
? <username>admin</username>?
? <password>admin123</password>?
</server>?
<server>?
? <id>nexus-snapshots</id>?
? <username>admin</username>?
? <password>admin123</password>?
</server>
注意這里配置的server的id必須和pom文件中的distributionManagement對應倉庫的id保持一致,maven在處理發布時會根據id查找用戶名稱和密碼進行登錄和文件的上傳發布。
此外nexus提供了全面的權限控制,能讓用戶自由地配置nexus用戶,角色,權限