基於Docker搭建Maven私服,以及項目如何使用Maven私服詳解
推薦個人Docker文章,講的非常詳細
【玩轉Docker容器 1】Dockerd的詳解及安裝【玩轉Docker容器 2】基於Docker一分鐘搭建完 Jdk、Mysql、Nginx、Redis、Tomcat環境
【玩轉Docker容器 3】基於Docker部署SpringBoot項目
【玩轉Docker容器 4】基於Docker搭建Docker私服,以及如何使用Docker私服詳解
【玩轉Docker容器 5】基於Docker搭建Maven私服,以及項目如何使用Maven私服詳解
【玩轉Docker容器 6】基於Docker構建GitLab管理代碼
【玩轉Docker容器 7】基於Docker安裝Jenkins實現自動化構建、部署、測試、監控項目
1.Nexus是什麼
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。我們可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作爲遠程倉庫在該局域網的一個代理。
2.Nexus和Maven私服原理
解釋:Nexus就是Maven的私服倉庫,一般大一點的公司都已自己的私有Maven庫
1、我們從項目實際開發來看一些無法從外部倉庫下載的組件(自定義的組件,未開源),例如內部的項目還要用的,這樣我們就可以署到私服上,以便供其他依賴項目使用。
2、爲了節省帶寬和時間,在局域網內架設一個私有的倉庫服務器,用其代理所有外部的遠程倉庫。當本地Maven項目需要下載構件時,先去私服請求,如果私服沒有,則再去遠程倉庫請求,從遠程倉庫下載構件後,把構件緩存在私服上。這樣,及時暫時沒有Internet鏈接,由於私服已經緩存了大量構件,整個項目還是可以正常使用的。同時,也降低了中央倉庫的負荷。
3.什麼場景用Maven私服呢?
1.在實際開發中,項目中可能會用到第三方的jar、內部通訊的服務接口都會打入到公司的私服中。
2.自定義的jar包,或者SpringBoot的pom包,一些自己封裝好的包打包到私有Maven中去,只供自己或者朋友使用(就比如你封裝了個非常強大的代碼自動生成器,或者微信和支付寶支付的封裝,只需要稍微的配置就可以使用,這時你就可以打包到Maven私服中去,下次直接在pom或xml文件配置座標就行了,只給自己或者公司或者朋友使用)
4.基於Docker搭建Nexus構建Maven私服
1.下載nexus3的鏡像
一定要是搭建了Docker的Linux環境喲,不知道的可以看我之前位置
輸入:
docker pull sonatype/nexus3
2.使用鏡像啓動一個容器
注:將容器內部/var/nexus-data掛載到主機/root/nexus-data目錄(8081:8081是Linux與Docker的端口映射)
docker run -d -p 8081:8081--name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
3.登錄Maven私服
關閉防火牆,訪問http://ip:8081
Maven私服啓動容器稍微比較慢,等待一會即可。
注:默認賬號密碼爲admin/admin123
媽耶,進不去,算了改密碼吧
4.修改初始密碼,登錄Maven私服
用戶名或密碼不正確,這個時候我們可以去admin.password文件中去看初始密碼。
輸入:(找到密碼文件)
find / -name 'admin.password'
輸入:
cat 輸入上面查找的文件位置獲取密碼
那一串亂七八糟的就是密碼。那他的登陸進去修改密碼
再次登錄,登錄進去後他會默認讓你修改用戶名密碼,注意倆個都是打新密碼
一直下一步就好了
5.創建Maven私服
1.創建Maven總庫
點擊藍色的創建就ok啦
2.創建Maven存儲庫
點擊設置界面,選擇Repositories,點擊Create repository,如下圖所示:
選擇倉庫類型,這裏Maven有三種類型,分別是group、hosted、proxy。這裏只演示hosted類型,所以選擇Maven(hosted),如下圖:
這裏的倉庫選擇正確喲
輸入了name,選擇好了Storage,後移到底下選擇創建
出現如圖
已成功,忽略地下的docker爲什麼很慢的不一樣,docker是之前創建的
6.Java項目構建jar包上傳至Maven私服
1.修改本地settings.xml
使用idea找到settings.xml
2.將其打開找到的setting.xml
在server標籤裏面加上你登錄maven私服的用戶名密碼
有可能這個文件會有很多註釋,忽略就好了,我截的屏沒有
3.配置項目的pom文件
在pom裏面添加
<!--注意限定版本一定爲RELEASE,因爲上傳的對應倉庫的存儲類型爲RELEASE -->
<!--指定倉庫地址 -->
<distributionManagement>
<repository>
<!--此名稱要和.m2/settings.xml中設置的ID一致 -->
<id>boot-tool</id>
<!--上傳的位置-->
<url>http://120.77.0.58:8081/repository/boot-tool/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!--發佈代碼Jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
</plugin>
<!--發佈源碼插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
上傳的位置記得要改,改成私有maven倉庫的位置
私有倉庫位置在:
4.打包上傳
在ider底下點擊Terminai
輸入:mvn deploy
等待一會就上傳成功了
網頁訪問自己的上傳位置看看
已成功
7.測試從Maven私服使用jar包
如何引用呢,我這裏創建了一個空的Maven項目
對比一下倆張圖,只需在pom文件類要把name,id,版本對應,在引用遠程倉庫地址即可使用
代碼
<dependencies>
<dependency>
<groupId>com.lijie</groupId>
<artifactId>lijie-core-boot</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>mayikt</id>
<url>http://120.77.0.58:8081/repository/boot-tool/</url>
</repository>
</repositories>
這就是我引入的jar包