Maven私有倉庫-Nexus3
- 工作中,可能需要封裝一些通用的工具類庫
- 但是公司程式碼較為敏感,一般不能開放到公共倉庫中
- 此時可以使用Nexus3搭建公司內部使用的私有倉庫
- 影片版:BiliBili
Demo步驟
- 使用docker建立Nexus3服務
建立專案並推送倉庫
- 修改專案pom.xml檔案配置
- 修改Maven軟體配置
- 使用"mvn deploy"命令,推送到到倉庫
建立專案並引用上一步的專案
- 修改Maven軟體配置
- 重啟IDE
- 使用"mvn install"命令,安裝依賴
1. 使用docker建立nexus3服務
使用docker建立nexus3容器
- 訪問:http://127.0.0.1:8081
- 較吃資源,啟動速度較慢,顯示無法訪問頁面就多等一會兒(電腦渣的可能要個三五分鐘,比如我的)
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
獲取nexus3密碼
點選頁面右上角的"Sign in",按彈窗提示找到預設密碼
- 預設賬號:admin
- 預設密碼:容器內的 "/nexus-data/admin.password"
- 會提示重置密碼,改個記得住的密碼(或者用預設密碼),後面配置需要用到
- 如下圖,複製"maven-releases"/"maven-snapshots"倉庫地址
nexus-public是一個倉庫分組,預設包含以下倉庫
- maven-releases:本地release庫
- maven-snapshots:本地snapshots庫
- maven-central:代理中央maven庫,可以改成國內代理,如阿里雲(https://maven.aliyun.com/repository/public)
2. 建立專案並推送倉庫
修改專案pom.xml檔案配置
直接改造Maven專案(或者新建一個Maven專案)
- 執行"mvn package"能打包出jar的專案就行
如下在pom.xml新增nexus3地址資訊
- 與dependencies/build同級
<dependencies>...略</dependencies>
<build>...略</build>
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>maven-releases</name>
<url>${這裡填寫從nexus頁面上覆制的maven-releases的url}</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots</name>
<url>${這裡填寫從nexus頁面上覆制的maven-snapshots的url}</url>
</snapshotRepository>
</distributionManagement>
推送包
- 執行 "mvn deoloy"
- 此時報錯 "...status: 401 Unauthorized",說明專案配置正確
修改Maven軟體配置
開啟 ${maven根目錄}/conf/settings.xml
- 增加nexus賬號密碼
- id要和在專案pom.xml中配置的一致
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>${密碼}</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>${密碼}</password>
</server>
</servers>
再次執行"mvn deploy"就不會報錯了
重新整理nexus頁面上可以看到上傳的包
- 專案版本不帶"-SNAPSHOT"在"maven-releases"目錄
- 否則在"maven-releases"目錄
3. 建立專案並引用上一步的專案程式碼
修改Maven軟體配置
開啟 ${maven根目錄}/conf/settings.xml
- 啟用映象,如果有其他映象可以註釋掉
- 重啟IDE,pom.xml中像線上的庫一樣新增dependency即可使用
<mirror>
<id>nexus-public</id>
<mirrorOf>*</mirrorOf>
<name>私有倉庫</name>
<url>${這裡填寫從nexus頁面上覆制的maven-public的url}</url>
</mirror>