maven私有鏡像倉(cāng)庫(kù)nexus部署使用
1、Nexus部署
#查找鏡像 docker search sonatype/nexus3 #拉取鏡像 docker pull sonatype/nexus3 #持久化目錄 mkdir -p /data/nexus/data chmod 777 -R /data/nexus/data #啟動(dòng)服務(wù) docker run -d --name nexus3 -p 8081:8081 --restart always -v /data/nexus/data:/nexus-data sonatype/nexus3 #查看日志 docker logs -f nexus3
稍等一下,出現(xiàn) Started Sonatype Nexus OSS 表示啟動(dòng)好了。
2、Nexus訪問(wèn)
安裝完成后可訪問(wèn)管理平臺(tái):http://ip:8081,打開瀏覽器,訪問(wèn) http://ip:8081/
admin賬戶登錄密碼查看
cat /data/nexus/data/admin.password
3、Nexus配置
默認(rèn)倉(cāng)庫(kù)說(shuō)明
maven-central:maven中央庫(kù),默認(rèn)從https://repo1.maven.org/maven2/拉取jar
maven-releases:私庫(kù)發(fā)行版jar,初次安裝請(qǐng)將Deployment policy設(shè)置為Allow redeploy
maven-snapshots:私庫(kù)快照(調(diào)試版本)jar
maven-public:倉(cāng)庫(kù)分組,把上面三個(gè)倉(cāng)庫(kù)組合在一起對(duì)外提供服務(wù),在本地maven基礎(chǔ)配置settings.xml或項(xiàng)目pom.xml中使用
Nexus倉(cāng)庫(kù)類型介紹
hosted:本地倉(cāng)庫(kù),通常我們會(huì)部署自己的構(gòu)件到這一類型的倉(cāng)庫(kù)。比如公司的第二方庫(kù)。
proxy:代理倉(cāng)庫(kù),它們被用來(lái)代理遠(yuǎn)程的公共倉(cāng)庫(kù),如maven中央倉(cāng)庫(kù)。
group:倉(cāng)庫(kù)組,用來(lái)合并多個(gè)hosted/proxy倉(cāng)庫(kù),當(dāng)你的項(xiàng)目希望在多個(gè)repository使用資源時(shí)就不需要多次引用了,只需要引用一個(gè)group即可。
4、創(chuàng)建Blob Stores
在創(chuàng)建repository之前,還需要先指定文件存儲(chǔ)目錄,便于統(tǒng)一管理。就需要?jiǎng)?chuàng)建Blob Stores,不創(chuàng)建則使用的是default
可以看到blob stores有兩個(gè),一個(gè)是系統(tǒng)默認(rèn)的,一個(gè)是剛創(chuàng)建的。如果不想自己創(chuàng)建,使用系統(tǒng)默認(rèn)的文件存儲(chǔ)目錄也是可以的。到時(shí)候創(chuàng)建repository時(shí),存儲(chǔ)目錄選擇default就可以了。新創(chuàng)建的目錄,可以在/data/blobs/目錄下面可以看到。
5、Nexus倉(cāng)庫(kù)
如圖所示,代理倉(cāng)庫(kù)負(fù)責(zé)代理遠(yuǎn)程中央倉(cāng)庫(kù),托管倉(cāng)庫(kù)負(fù)責(zé)本地資源,組資源庫(kù) = 代理資源庫(kù) + 托管資源庫(kù)
6、創(chuàng)建proxy repository代理倉(cāng)庫(kù)
選擇maven2(proxy),代理倉(cāng)庫(kù)
設(shè)置代理倉(cāng)庫(kù)
其他的可以采用默認(rèn),以后需要修改的可以再修改。
這里推薦幾個(gè)遠(yuǎn)程倉(cāng)庫(kù):
jboss的maven中央倉(cāng)庫(kù)地址:http://repository.jboss.com/maven2/
阿里云的maven中央倉(cāng)庫(kù)地址:http://maven.aliyun.com/nexus/content/groups/public/
apache的maven中央倉(cāng)庫(kù)地址:http://repo.maven.apache.org/maven2/
7、創(chuàng)建hosted repository倉(cāng)庫(kù)
jboss的maven中央倉(cāng)庫(kù)地址:http://repository.jboss.com/maven2/
阿里云的maven中央倉(cāng)庫(kù)地址:http://maven.aliyun.com/nexus/content/groups/public/
apache的maven中央倉(cāng)庫(kù)地址:http://repo.maven.apache.org/maven2/
上圖的Hosted設(shè)置選項(xiàng),選項(xiàng)中有三個(gè)值:
Allow redeploy:允許同一個(gè)版本號(hào)下重復(fù)提交代碼, nexus以時(shí)間區(qū)分
Disable redeploy:不允許同一個(gè)版本號(hào)下重復(fù)提交代碼
Read-Only:不允許提交任何版本原生的maven-releases庫(kù)是Disable redeploy設(shè)置, maven-snapshots是Allow redeploy。
8、創(chuàng)建group repository組倉(cāng)庫(kù)
9、maven部署配置
#獲取軟件包 wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz --no-check-certificate tar -zxvf apache-maven-3.9.6-bin.tar.gz echo "" >>/etc/profile source /etc/profile mvn -V
Maven下的setting.xml文件和項(xiàng)目中的pom.xml文件的關(guān)系是:settting.xml文件是全局設(shè)置,而pom.xml文件是局部設(shè)置。pom.xml文件對(duì)于項(xiàng)目來(lái)說(shuō),是優(yōu)先使用的。而pom.xml文件中如果沒(méi)有配置鏡像地址的話,就按照settting.xml中定義的地址去查找。
如上圖方式獲取組倉(cāng)庫(kù)smart_group的倉(cāng)庫(kù)地址,修改setting.xml文件如下:
<!--nexus服務(wù)器,id為組倉(cāng)庫(kù)name--> <servers> <server> <id>custom_group</id> <username>admin</username> <password>admin123</password> </server> </servers> <!--倉(cāng)庫(kù)組的url地址,id和name可以寫組倉(cāng)庫(kù)name,mirrorOf的值設(shè)置為central--> <mirrors> <mirror> <id>custom_group</id> <name>custom_group</name> <url>http://192.168.124.189:8081/repository/custom_group/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
修改后可以重新編譯項(xiàng)目,必須添加參數(shù)-U,(-U,–update-snapshots,強(qiáng)制更新releases、snapshots類型的插件或依賴庫(kù),否則maven一天只會(huì)更新一次snapshot依賴)。代理倉(cāng)庫(kù)會(huì)從遠(yuǎn)程中央倉(cāng)庫(kù)下載jar包
mvn clean compile -U
新建SpringBoot項(xiàng)目,可以查看本地倉(cāng)庫(kù),遠(yuǎn)程倉(cāng)庫(kù)的下載的Jar包
這個(gè)時(shí)候可以看到代理倉(cāng)庫(kù)已經(jīng)從中央倉(cāng)庫(kù)下載了項(xiàng)目編譯需要的jar包。同樣地,在組倉(cāng)庫(kù)中也能看到所有的jar包,包括代理倉(cāng)庫(kù)和宿主倉(cāng)庫(kù)的。
10、管理平臺(tái)上傳三方j(luò)ar包
有些jar是第三方提供的,在中央倉(cāng)庫(kù)中是沒(méi)有的,我們可以上傳這些本地三方j(luò)ar包到hosted repository宿主倉(cāng)庫(kù)中。
上傳成功后,就可以看到hosted repository和group repository中已經(jīng)有了剛上傳的三方j(luò)ar包
然后項(xiàng)目中通過(guò)編譯打包就可以下載jar包到本地repository中了,記住maven clean、compile、package首次執(zhí)行時(shí)加參數(shù)-U。
11、命令上傳三方j(luò)ar包
在setting.xml配置文件中添加hosted repository server
<!--id自定義,但是在使用命令上傳的時(shí)候會(huì)用到--> <server> <id>custom_hosted</id> <username>admin</username> <password>admin123</password> </server>
使用如下命令上傳jar包:
mvn deploy:deploy-file -DgroupId=byd.ghy -DartifactId=portal-auth -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\workspace_byd\workspace_ghy\workspace_portal-backend\portal-backend-jar-v2\target\auth-server.jar -Durl=http://192.168.124.189:8081/repository/custom_hosted/ -DrepositoryId=custom_hosted 命令解釋: -DgroupId=byd.ghy 自定義 -DartifactId=portal-auth 自定義 -Dversion=1.0.0 自定義,三個(gè)自定義,構(gòu)成pom.xml文件中的標(biāo)識(shí) -Dpackaging=jar 傳的類型是jar類型 -Dfile=D:\auth-server.jar jar包的本地磁盤位置 -Durl=http://ip:8081/repository/custom_hosted/ hosted資源庫(kù)的地址 -DrepositoryId=custom_hosted 需要和setting.xml文件中配置的ID一致 例如: mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=./cloudx-common-basics-2.0.2-SNAPSHOT.jar -DgroupId=com.risit.chk -DartifactId=risit-chk-common -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -DrepositoryId=nexus-snapshots -Durl=http://10.10.111.222:8081/repository/nexus-snapshots/ mvn deploy:deploy-file -Dfile=cloudx-center-2.0.2-SNAPSHOT.pom -DgroupId=com.cloudx -DartifactId=cloudx-center -Dversion=2.0.2-SNAPSHOT -Dpackaging=pom -DrepositoryId=nexus-snapshots -Durl=http://10.10.111.222:8081/repository/nexus-snapshots/
上傳成功后,hosted repository中已經(jīng)可以看到了
12、deploy部署jar包到私服
release和snapshots jar包區(qū)別
SNAPSHOT版本代表不穩(wěn)定(快照版本),還在處于開發(fā)階段,隨時(shí)都會(huì)有變化。當(dāng)上傳同樣的版本號(hào)jar包的時(shí)候,SNAPSHOT會(huì)在版本號(hào)的后面自動(dòng)追加一串新的數(shù)字,即日志標(biāo)簽,nexus會(huì)根據(jù)日志標(biāo)簽區(qū)分出不同的版本,在maven引用時(shí),如果使用的是snapshot版本,重新導(dǎo)入maven的時(shí)候,會(huì)去私庫(kù)拉取最新上傳的代碼。
RELEASE則代表穩(wěn)定的版本(發(fā)布版本),一般上線后都會(huì)改用RELEASE版本。
也就是說(shuō)1.0,2.0這樣的版本只能有一個(gè),也就是說(shuō)當(dāng)前版本號(hào)下,不可能出現(xiàn)不同的jar。
創(chuàng)建snapshot倉(cāng)庫(kù)
可以在nexus上添加一個(gè)snapshot倉(cāng)庫(kù),專門用于存放snapshot版本的jar包。snapshot倉(cāng)庫(kù)也是hosted類型的,創(chuàng)建方式和hosted repository類型。創(chuàng)建好后,加入到組倉(cāng)庫(kù)里面就可以了。
一定要選擇Deployment Policy為allow redeploy
同樣的操作,創(chuàng)建Release類型的倉(cāng)庫(kù),并加入到組中
13、項(xiàng)目pom.xml文件配置
可以在項(xiàng)目的pom文件中設(shè)置具體的relaeses庫(kù)和snapshots庫(kù)。如果當(dāng)前項(xiàng)目的版本號(hào)的后綴名中帶著-SNAPSHOT,類似***-SNAPSHOT,就會(huì)將項(xiàng)目jar包提交到snapshots庫(kù)中,沒(méi)有帶-SNAPSHOT的話會(huì)提交releases庫(kù)中。
在pom.xml文件中配置 distributionManagement 節(jié)點(diǎn)如下,在項(xiàng)目中執(zhí)行deploy命令后,jar包將會(huì)被上傳到nexus中。
setting.xml中配置
<server> <id>custom_snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>custom_releases</id> <username>admin</username> <password>admin123</password> </server>
pom.xml配置
<repositories> <repository> <id>custom_group</id> <name>Nexus Repository</name> <url>http://192.168.124.189:8081/repository/custom_group/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>custom_group</id> <name>Nexus Plugin Repository</name> <url>http://192.168.124.189:8081/repository/custom_group/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> <!--項(xiàng)目分發(fā)信息,在執(zhí)行mvn deploy后表示要發(fā)布的位置。有了這些信息就可以把網(wǎng)站部署到遠(yuǎn)程服務(wù)器或者把構(gòu)件jar等部署到遠(yuǎn)程倉(cāng)庫(kù)。 --> <distributionManagement> <repository><!--部署項(xiàng)目產(chǎn)生的構(gòu)件到遠(yuǎn)程倉(cāng)庫(kù)需要的信息 --> <id>custom_releases</id><!-- 此處id和settings.xml的id保持一致 --> <name>Nexus Release Repository</name> <url>http://192.168.124.189:8081/repository/custom_releases/</url> </repository> <snapshotRepository><!--構(gòu)件的快照部署到哪里?如果沒(méi)有配置該元素,默認(rèn)部署到repository元素配置的倉(cāng)庫(kù),參見distributionManagement/repository元素 --> <id>custom_snapshots</id><!-- 此處id和settings.xml的id保持一致 --> <name>Nexus Snapshot Repository</name> <url>http://192.168.124.189:8081/repository/custom_snapshots/</url> </snapshotRepository> </distributionManagement>
默認(rèn)地,maven編譯打包不會(huì)下載SNAPSHOT版本的jar包,所以還需要在pom.xml文件中配置支持下載snapshot版本jar包。
mvn clean deploy -Dmaven.test.skip=true
至此,nexus搭建完畢,支持本地部署依賴jar包?。?!
14、問(wèn)題排查
1、nexus.log日志中報(bào)錯(cuò)內(nèi)容如下:
UNKNOWN com.sonatype.nexus.plugins.outreach.internal.outreach.SonatypeOutreach - Could not download page bundle
java.net.SocketException: Network is unreachable (connect failed)
解決方法:
a) 訪問(wèn)Nexus管理站點(diǎn),我這里是 http://192.168.124.184:8081,進(jìn)入后,用管理員帳號(hào)登錄。
b)點(diǎn)擊 下圖中上面的按鈕,然后選擇左側(cè)Capabilities,然后點(diǎn)擊右側(cè)的 Outreach:Management
c)點(diǎn)擊【disable】按鈕,關(guān)閉Outreach服務(wù)
或者給Outreach設(shè)定新的URL,可以在標(biāo)簽頁(yè) Settings 中的 Override Outreach Content URL項(xiàng)中設(shè)定。Nexus支持的URL有如下三個(gè):
- http://links.sonatype.com and https://links.sonatype.com
- http://download.sonatype.com and https://download.sonatype.com
- http://sonatype-download.global.ssl.fastly.net and https://sonatype-download.global.ssl.fastly.net
到此這篇關(guān)于maven私有鏡像倉(cāng)庫(kù)nexus部署使用的文章就介紹到這了,更多相關(guān)maven nexus部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- maven鏡像倉(cāng)庫(kù)的配置過(guò)程
- Maven配置倉(cāng)庫(kù)、阿里云鏡像、環(huán)境變量(史上最全)
- maven構(gòu)建docker鏡像push到鏡像倉(cāng)庫(kù)方式
- Maven 倉(cāng)庫(kù)國(guó)內(nèi)鏡像源收藏(小結(jié))
- 幾個(gè)好用Maven鏡像倉(cāng)庫(kù)地址(小結(jié))
- 詳解Maven settings.xml配置(指定本地倉(cāng)庫(kù)、阿里云鏡像設(shè)置)
- Maven setting配置鏡像倉(cāng)庫(kù)的方法步驟
- maven+阿里云創(chuàng)建國(guó)內(nèi)鏡像的中央倉(cāng)庫(kù)(親測(cè)可用)
- 淺談Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精)
- Maven倉(cāng)庫(kù)鏡像配置的方法實(shí)現(xiàn)
相關(guān)文章
Spring中@Conditional注解的詳細(xì)講解及示例
這篇文章主要介紹了Spring中@Conditional注解的詳細(xì)講解及示例,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean,需要的朋友可以參考下2023-11-11使用Java打印數(shù)字組成的魔方陣及字符組成的鉆石圖形
這篇文章主要介紹了使用Java打印數(shù)字組成的魔方陣及字符組成的鉆石圖形,可作為一些CLI程序界面的基礎(chǔ)部分,需要的朋友可以參考下2016-03-03使用maven工具解決jar包沖突或重復(fù)加載的問(wèn)題
這篇文章主要介紹了使用maven工具解決jar包沖突或重復(fù)加載的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Rabbitmq延遲隊(duì)列實(shí)現(xiàn)定時(shí)任務(wù)的方法
這篇文章主要介紹了Rabbitmq延遲隊(duì)列實(shí)現(xiàn)定時(shí)任務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05詳解Java繼承中屬性、方法和對(duì)象的關(guān)系
這篇文章主要幫助大家詳細(xì)介紹了Java繼承中屬性、方法和對(duì)象的關(guān)系,感興趣的朋友可以參考一下2016-03-03spring boot 配置動(dòng)態(tài)刷新詳解
這篇文章主要介紹了spring boot 配置動(dòng)態(tài)刷新實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09Java基礎(chǔ)之多線程方法狀態(tài)和創(chuàng)建方法
Java中可以通過(guò)Thread類和Runnable接口來(lái)創(chuàng)建多個(gè)線程,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之多線程方法狀態(tài)和創(chuàng)建方法的相關(guān)資料,需要的朋友可以參考下2021-09-09