一、前言
我們在JavaWeb開發中必不可少的就是jar包管理-maven
,在沒有maven之前,都是自己手動下載jar包匯入到專案中,非常的繁瑣。
maven出現之後,又迎來新的問題,對於倉庫里人家釋出的都可以引用下載,但是公司自己內部寫的jar包,不想讓外人看到,自己公司來回貼上複製,非常的繁瑣,版本維護起來也是十分頭疼!
這時Nexus Repository
出現了,現在主流的還是nexus3
,所以今天小編帶大家一起搭建使用一下。當然公司也必須有一個自己的私服,來存放公司的技術沉澱,提高開發效率!
網上教程看了很多,但是基本都是教怎麼上傳到私服,從私服拉取依賴就沒有寫!
本文從上傳到拉去面面俱到,對你有幫助,一鍵三連哈!!
二、介紹
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. 測試使用
新專案可以使用依賴中的註解:
八、總結
經過半天的測試加編寫,終於完成,對於私服有了更深的認識!
私服是每個公司必須要有的,當然也是我們必須要掌握的,小編整理出來,方便大家學習!
優點前面都說了,這裡就不多說了!
前人種樹後人乘涼嘛,對你有幫助,還請不要吝嗇你的發財小手點點關注哈!
關注小編的微信公眾號,一起交流學習!文章首發看哦!