還不會自己搭建Maven私服——Nexus3?快來學(xué)習(xí)一下吧!
一、前言
我們在JavaWeb開發(fā)中必不可少的就是jar包管理-maven,在沒有maven之前,都是自己手動下載jar包導(dǎo)入到項目中,非常的繁瑣。
maven出現(xiàn)之后,又迎來新的問題,對于倉庫里人家發(fā)布的都可以引用下載,但是公司自己內(nèi)部寫的jar包,不想讓外人看到,自己公司來回粘貼復(fù)制,非常的繁瑣,版本維護起來也是十分頭疼!
這時Nexus Repository出現(xiàn)了,現(xiàn)在主流的還是nexus3,所以今天小編帶大家一起搭建使用一下。當(dāng)然公司也必須有一個自己的私服,來存放公司的技術(shù)沉淀,提高開發(fā)效率!
網(wǎng)上教程看了很多,但是基本都是教怎么上傳到私服,從私服拉取依賴就沒有寫!
二、介紹
官網(wǎng)地址:https://help.sonatype.com/repomanager3/product-information
nexus3是一種特殊的遠程倉庫,一般部署在公司服務(wù)器或者局域網(wǎng)內(nèi)的倉庫服務(wù),私服代理廣域網(wǎng)上的遠程倉庫,供公司的Maven用戶使用。
當(dāng)Maven依賴需要依賴的時候,它從私服請求,如果私服上不存在依賴,則從外部的遠程倉庫下載,緩存在私服上之后,再為Maven的下載請求提供服務(wù)。
我們還可以把一些無法從外部倉庫下載到的構(gòu)件上傳到私服上。
總的準(zhǔn)則:「無論私服有沒有,我們本地都是使用私服提供的!」
三、優(yōu)點
- 引入速度提高
- 加速Maven構(gòu)建
- 方便管理
- 穩(wěn)定性高
- 降低中央倉庫的負(fù)荷
- 隱私性高
四、docker構(gòu)建運行
1、創(chuàng)建掛載目錄
mkdir /mydata/nexus/nexus-data -p
給權(quán)限:
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、獲取密碼
我們看到密碼可以在容器內(nèi)獲?。?/p>
默認(rèn)用戶是,唯一生成的密碼可以在卷內(nèi)的文件中找到。有關(guān)卷的信息,請參閱持久數(shù)據(jù)。admin admin.password
「由于我們掛載了數(shù)據(jù)文件,主要在宿主機上查看即可!」
切換到目錄:
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文件內(nèi)
五、nexus配置和解釋
1、繼續(xù)初始化
2、編寫新密碼
3、配置匿名訪問
由于匿名訪問有安全性問題,在公司還是禁用為好!
4、完成
5、倉庫名稱類型
我們可以看到有三種類型:
倉庫類型 | 說明 |
proxy | 代理到遠程倉庫,默認(rèn)國外,可以修改為國內(nèi)阿里云代理 |
group | 存放:通過 Nexus 獲取的第三方 jar 包 |
hosted | 存放:本團隊其他開發(fā)人員部署到 Nexus 的 jar 包 |
還有一些倉庫名稱:
倉庫名稱 | 說明 |
maven-central | Nexus 對 Maven 中央倉庫的代理 |
maven-public | Nexus 默認(rèn)創(chuàng)建,供開發(fā)人員下載使用的組倉庫 |
maven-releasse | Nexus 默認(rèn)創(chuàng)建,供開發(fā)人員部署自己 jar 包的宿主倉庫要求 releasse 版本(生產(chǎn)版本) |
maven-snapshots | Nexus 默認(rèn)創(chuàng)建,供開發(fā)人員部署自己 jar 包的宿主倉庫要求 snapshots 版本(測試版本) |
6、調(diào)整代理地址
點擊maven-central進入詳情:
把代理地址換為阿里云的:https://maven.aliyun.com/repository/public。
往下滑到最后點擊保存!
7、新建用戶和倉庫
關(guān)于很多教程都是新建用戶和倉庫,小編這里就使用admin和自帶的倉庫了!一般的小公司夠了,公司有一定規(guī)模在新建吧??!
六、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版本的構(gòu)件-->
<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版本的構(gòu)件 -->
<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、測試使用
新項目可以使用依賴中的注解:
八、總結(jié)
經(jīng)過半天的測試加編寫,終于完成,對于私服有了更深的認(rèn)識!
私服是每個公司必須要有的,當(dāng)然也是我們必須要掌握的,小編整理出來,方便大家學(xué)習(xí)!
優(yōu)點前面都說了,這里就不多說了!