我們在使用maven的時候,對於項目所依賴的jar包,maven默認會在中央倉庫下載jar包,到本地的磁盤目錄(如果沒有配置則是用戶目錄下/.m2/repository文件夾下)。如果公司內部搭了一個maven私服的話,開發人員將倉庫地址指向內網倉庫地址,需要的jar包可直接在私服取,下載速度比遠程要快,如果本地倉庫沒有則自動從遠程下載並保存在本地。本文使用nexus搭建一個私服。
一、Nexus下載安裝
1)下載Nexus 👈 - 下載最新版本,這里使用nexus-3.14.0-04
2)Nexus安裝 - 解壓縮到本地即可
3)修改配置 - Nexus安裝目錄下 nexus-3.14.0-04 / etc / nexus-default.properties 配置表中可以修改以下屬性:
application-host: Nexus服務監聽的主機 application-port: Nexus服務監聽的端口 nexus-context-path: Nexus服務的上下文路徑
- 這里我保持默認設置
4)Nexus服務啟動
● 以管理員身份運行cmd -> 進入到nexus安裝目錄../nexus-3.14.0-04/bin目錄下 ● nexus.exe/install:安裝nexus服務 ● nexus.exe/start:啟動nexus服務 ● nexus.exe/stop:停止nexus服務
- 安裝完成之后,在windows服務里邊將看到如下圖所示:
5)測試nexus是否安裝成功
① 啟動服務后,根據 nexus-default.properties 的配置進行登錄,如果沒有修改,可以在瀏覽器中輸入http://localhost:8081來登錄 ② 默認用戶名:admin,密碼:admin123
nexus可以正常訪問和登錄,這就說明nexus已經安裝成功。
二、使用Nexus(私服)
1)私服工作原理
配置Nexus之前,需要先了解一下私服的工作原理,如下圖:

找依賴包的流程: 首先在本地倉庫中找,如果沒命中,那么就找遠程私服;遠程私服的查找規則同樣是先找host屬性的私有庫,然后再去找proxy屬性的遠程倉庫;可以配置多個proxy;
2)Nexus倉庫類型介紹
默認安裝有以下這幾個倉庫,在控制台也可以修改遠程倉庫的地址,第三方倉庫等
● hosted(宿主倉庫庫):存放本公司開發的jar包(正式版本、測試版本)
● proxy(代理倉庫):代理中央倉庫、Apache下測試版本的jar包
● group(組倉庫):使用時連接組倉庫,包含Hosted(宿主倉庫)和Proxy(代理倉庫)
3)上傳jar包到遠程倉庫
② 本地自己開發供給項目組其余同事使用,這種直接配置項目的pom文件和maven的setting文件,之后deploy發布即可發布到
① 第三方jar包,可以直接使用web頁面上傳並設置對應GAV即可
1.在Maven的 setting.xml 中配置nexus訪問權限
<servers> <!-- 配置nexus權限 --> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
2.在項目的pom.xml中配置nexus倉庫位置
<!--配置pom 將jar包可以上傳到nexus倉庫中 --> <distributionManagement> <!-- 發布版 --> <repository> <id>releases</id> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <!-- 快照版 --> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
3.使用deploy命令將項目打包,發布到nexus中
4.檢查倉庫中是否有上傳好的jar包
注意:
① 這里只有Snapshot的倉庫上傳成功,Release倉庫並沒有上傳成功,這是因為版本號名稱結尾有SNAPSHOT,默認以這個結尾是不會上傳到Release倉庫去的,去除就會上傳到Release倉庫且不會上傳到快照倉庫
② Release倉庫默認不支持重復發布,可配置
③ 注:setting中server標簽下的id要和pom文件中倉庫配置的id相同,即指定上傳到哪個倉庫
4)從遠程倉庫下載jar包
1.使用profiles標簽在Maven的setting.xml中配置倉庫組maven-public,倉庫組包括releases、snapshots、central
<profiles> <!-- 配置nexus遠程倉庫地址,從遠程倉庫下載jar包 --> <profile> <id>mynexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles>
2.激活profiles標簽 - activeProfile的屬性需和profile的ID一致
<!-- 激活profiles --> <activeProfiles> <activeProfile>mynexus</activeProfile> </activeProfiles>
3.測試
① 如果之前打包了,刪除本地倉庫下的mapper.jar
② 關閉mapper子項目,讓service子項目依賴mapper.jar包
③ 更新項目,從遠程倉庫中獲取mapper.jar
Maven控制台 - Maven Console
這里顯示我們Downloaded了
5)使用自定義用戶和自定義倉庫進行上傳和下載jar包
1.建議先將管理員密碼修改;
2.在Roles中可以增加用戶權限組,里邊可以自定義用戶權限;
Roles -> Create role
設置完然后點擊創建【Create role】
3.在Users中可以增加用戶,分配設置好的權限;
Users -> Create local user
4.在Repositories中新建倉庫;
① name:倉庫名稱;
② version pollcy:版本策略;
- Release:發行版;
- Snapshot:快照版;
- Mixed:混合模式;
③ Layout pollcy:布局策略;
- Strict:嚴格;
- Permissive:寬松;
④ Deployment pollcy:部署策略;
- Allow redeploy:允許重新部署;
- Disable redeploy:禁止重新部署;
- Read-only:只讀;
Repositories -> Create repository -> 設置Name倉庫名稱、Deployment pollcy部署策略(允許重復部署)
- 自定義倉庫創建完成。
5、修改配置,將jar包上傳到自定義倉庫,然后從自定義倉庫下載jar包;
- pom.xml修改
- maven/conf/settins.xml修改
- 修改倉庫組,將自定義倉庫添加進去,不用的提取出來,保存
- 配置完成,上傳下載方式與上面一致。