一、前言
我們在JavaWeb開發中必不可少的就是jar包管理-maven,在沒有maven之前,都是自己手動下載下傳jar包導入到項目中,非常的繁瑣。
maven出現之後,又迎來新的問題,對于倉庫裡人家釋出的都可以引用下載下傳,但是公司自己内部寫的jar包,不想讓外人看到,自己公司來回粘貼複制,非常的繁瑣,版本維護起來也是十分頭疼!
這時Nexus Repository出現了,現在主流的還是nexus3,是以今天小編帶大家一起搭建使用一下。當然公司也必須有一個自己的私服,來存放公司的技術沉澱,提高開發效率!
網上教程看了很多,但是基本都是教怎麼上傳到私服,從私服拉取依賴就沒有寫!
本文從上傳到拉取面面俱到,對你有幫助,一鍵三連哈!!
二、介紹
官網位址:https://help.sonatype.com/repomanager3/product-information
nexus3是一種特殊的遠端倉庫,一般部署在公司伺服器或者區域網路内的倉庫服務,私服代理廣域網上的遠端倉庫,供公司的Maven使用者使用。
當Maven依賴需要依賴的時候,它從私服請求,如果私服上不存在依賴,則從外部的遠端倉庫下載下傳,緩存在私服上之後,再為Maven的下載下傳請求提供服務。
我們還可以把一些無法從外部倉庫下載下傳到的構件上傳到私服上。
總的準則:無論私服有沒有,我們本地都是使用私服提供的!
三、優點
- 引入速度提高
- 加速Maven建構
- 友善管理
- 穩定性高
- 降低中央倉庫的負荷
- 隐私性高
四、docker建構運作
1. 建立挂載目錄
mkdir /mydata/nexus/nexus-data -p
給權限:
chmod 777 /mydata/nexus/nexus-data/
2. 啟動nexus
docker run -d -p 8081:8081 --name nexus -v /mydata/nexus/nexus-data:/nexus-data sonatype/nexus3
3. 擷取密碼
我們看到密碼可以在容器内擷取:
預設使用者是,唯一生成的密碼可以在卷内的檔案中找到。有關卷的資訊,請參閱持久資料。
admin admin.password
由于我們挂載了資料檔案,主要在主控端上檢視即可!
切換到目錄:
cd /mydata/nexus/nexus-data/
檢視密碼:
cat admin.password
密碼:206d5b6b-cc58-403f-af03-e5c8772a803a
在這裡插入圖檔描述
3. 通路頁面
ip+端口通路:http://192.168.239.132:8081/
在這裡插入圖檔描述
4. 登入
使用者:admin
密碼:挂載目錄下的admin.password檔案内
在這裡插入圖檔描述
五、nexus配置和解釋 1. 繼續初始化
在這裡插入圖檔描述
2. 編寫新密碼
在這裡插入圖檔描述
3. 配置匿名通路
由于匿名通路有安全性問題,在公司不是還是禁用為好!
在這裡插入圖檔描述
4. 完成
在這裡插入圖檔描述
5. 倉庫名稱類型
在這裡插入圖檔描述
我們可以看到有三種類型:
倉庫類型 | 說明 |
proxy | 代理到遠端倉庫,預設國外,可以修改為國内阿裡雲代理 |
group | 存放:通過 Nexus 擷取的第三方 jar 包 |
hosted | 存放:本團隊其他開發人員部署到 Nexus 的 jar 包 |
還有一些倉庫名稱:
倉庫名稱 | 說明 |
maven-central | Nexus 對 Maven 中央倉庫的代理 |
maven-public | Nexus 預設建立,供開發人員下載下傳使用的組倉庫 |
maven-releasse | Nexus 預設建立,供開發人員部署自己 jar 包的宿主倉庫要求 releasse 版本(生産版本) |
maven-snapshots | Nexus 預設建立,供開發人員部署自己 jar 包的宿主倉庫要求 snapshots 版本(測試版本) |
6. 調整代理位址
點選maven-central進入詳情:
把代理位址換為阿裡雲的:
https://maven.aliyun.com/repository/public
往下滑到最後點選儲存!
在這裡插入圖檔描述
7. 建立使用者和倉庫
關于很多教程都是建立使用者和倉庫,小編這裡就使用admin和自帶的倉庫了!
一般的小公司夠了,公司有一定規模在建立吧!!
六、settings.xml配置
1. 配置maven上傳資訊
我們打開本地的settings.xml檔案,把私服的位址和使用者配置上去!
<servers>
<server>
<id>maven-public</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
2. 配置從私服下載下傳
<profiles>
<profile>
<id>nexus-own</id>
<!-- 遠端倉庫清單 -->
<repositories>
<repository>
<id>maven-public</id>
<name>Nexus Central</name>
<!-- 虛拟的URL形式,指向鏡像的URL-->
<url>http://192.168.239.132:8081/repository/maven-public/</url>
<layout>default</layout>
<!-- 表示可以從這個倉庫下載下傳releases版本的構件-->
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-snapshots</id>
<name>Nexus Central</name>
<!-- 虛拟的URL形式,指向鏡像的URL-->
<url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
<layout>default</layout>
<!-- 表示可以從這個倉庫下載下傳snapshot版本的構件 -->
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-public</id>
<name>Nexus Central</name>
<url>http://192.168.239.132:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--需要激活 <profile>中的ID才生效-->
<activeProfile>nexus-own</activeProfile>
</activeProfiles>
七、springboot項目配置
1. 父項目pom檔案
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<parameters>true</parameters>
</configuration>
</plugin>
</plugins>
</build>
<!--打包上傳maven私服-->
<distributionManagement>
<repository>
<!--id的名字可以任意取,但是在setting檔案中的屬性<server>的ID與這裡一緻-->
<id>maven-releases</id>
<!--指向倉庫類型為host(宿主倉庫)的儲存類型為Release的倉庫-->
<url>http://192.168.239.132:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2. deploy上傳私服
輕按兩下deploy,上傳私服!
在這裡插入圖檔描述
3. 私服檢視
在這裡插入圖檔描述
一共上傳了兩次,都在私服中存在!
在這裡插入圖檔描述
4. 私服依賴在本地引用
我們建立一個springboot項目,然後引入依賴:
要勾選Projects下面的配置,不然無法引入依賴!
在這裡插入圖檔描述
5. 測試使用
新項目可以使用依賴中的注解:
在這裡插入圖檔描述
八、總結
經過半天的測試加編寫,終于完成,對于私服有了更深的認識!
私服是每個公司必須要有的,當然也是我們必須要掌握的,小編整理出來,友善大家學習!
優點前面都說了,這裡就不多說了!
前人種樹後人乘涼嘛,對你有幫助,還請不要吝啬你的發财小手點點關注哈!
關注小編的微信公衆号,一起交流學習!文章首發看哦!