日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Maven】CentOS7使用Nexus3搭建maven私服

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Maven】CentOS7使用Nexus3搭建maven私服 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、簡(jiǎn)介

  Maven是一個(gè)采用純Java編寫的開源項(xiàng)目管理工具, Maven采用了一種被稱之為Project Object Model(POM)概念來管理項(xiàng)目,所有的項(xiàng)目配置信息都被定義在一個(gè)叫做POM.xml的文件中, 通過該文件Maven可以管理項(xiàng)目的整個(gè)生命周期,包括清除、編譯,測(cè)試,報(bào)告、打包、部署等等。目前Apache下絕大多數(shù)項(xiàng)目都已經(jīng)采用Maven進(jìn)行管理. 而Maven本身還支持多種插件, 可以方便更靈活的控制項(xiàng)目, 開發(fā)人員的主要任務(wù)應(yīng)該是關(guān)注商業(yè)邏輯并去實(shí)現(xiàn)它, 而不是把時(shí)間浪費(fèi)在學(xué)習(xí)如何在不同的環(huán)境中去依賴jar包,項(xiàng)目部署等。
maven和ant都是軟件構(gòu)建工具(軟件管理工具),maven比ant更加強(qiáng)大,已經(jīng)取代了ant,jar包的聲明式依賴描述。maven有jar包的倉(cāng)庫。svn是一個(gè)軟件的版本控制工具,是一個(gè)協(xié)同開發(fā)工具。svn的倉(cāng)庫存放的是項(xiàng)目的源碼,歷史版本的備份,聲明每次版本的修改情況。

  私服是架設(shè)在局域網(wǎng)的一種特殊的遠(yuǎn)程倉(cāng)庫,目的是代理遠(yuǎn)程倉(cāng)庫及部署第三方構(gòu)件。有了私服之后,當(dāng) Maven 需要下載構(gòu)件時(shí),直接請(qǐng)求私服,私服上存在則下載到本地倉(cāng)庫;否則,私服請(qǐng)求外部的遠(yuǎn)程倉(cāng)庫,將構(gòu)件下載到私服,再提供給本地倉(cāng)庫下載。

  

  來到新公司發(fā)現(xiàn)maven私服都沒有,還在用手動(dòng)打jar包的方式添加依賴,所以不得不研究這個(gè)了。

二、搭建maven

1.下載maven壓縮包??apache-maven-3.5.4-bin.tar.gz ,然后解壓? tar -zxf?apache-maven-3.5.4-bin.tar.gz

2.添加環(huán)境變量

vi /etc/profile

在文件下方添加如下內(nèi)容(這里的MAVEN_HOME需要改為你自己的maven解壓目錄):

export JAVA_HOME="/opt/jdk1.8" export MAVEN_HOME="/opt/apache-maven-3.5.4" export PATH="$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH"

然后保存退出。

3.輸入命令 mvn version?看到如下內(nèi)容說明安裝成功了。

三、部署nexus

3.1.下載

由于專業(yè)版的nexus是收費(fèi)的,所以我下載的是開源版 Nexus OSS,下載地址為?https://www.sonatype.com/download-oss-sonatype

點(diǎn)擊紅框區(qū)域即可下載得到文件nexus-3.13.0-01-unix.tar.gz,然后上傳到服務(wù)器目錄下,我的是/opt目錄。

3.2.解壓

cd /opt
tar -zxf nexus-3.13.0-01-unix.tar.gz

解壓后會(huì)多出兩個(gè)目錄,nexus-3.13.0-01sonatype-work。

雖然不知道后面一個(gè)目錄是干嘛的,不管它就行了。

3.3.啟動(dòng)

1 cd nexus-3.13.0-01/bin/ 2 ./nexus start

看到如圖所示內(nèi)容表明我們已經(jīng)啟動(dòng)成功了,游覽器輸入http://localhost:8081即可訪問。

注意:

1.Nexus3開始訪問URL已經(jīng)變了,以前是http://localhost:8081/nexus,這個(gè)坑了我好一會(huì)兒。

2.啟動(dòng)后如果你立即訪問可能發(fā)現(xiàn)什么都沒有,不要急這個(gè)啟動(dòng)需要一定時(shí)間,30秒后到1分鐘后再嘗試訪問,這個(gè)開始我以為出問題了。

 

點(diǎn)擊右上角的sign in登錄,輸入賬戶admin,密碼admin123即可登錄成功。

3.4倉(cāng)庫介紹

按圖中標(biāo)識(shí)順序點(diǎn)擊,就可以看到有這些倉(cāng)庫,現(xiàn)在分別介紹它們,分為三種類型:

proxy:是遠(yuǎn)程倉(cāng)庫的代理。比如說在nexus中配置了一個(gè)central repository的proxy,當(dāng)用戶向這個(gè)proxy請(qǐng)求一個(gè)artifact,這個(gè)proxy就會(huì)先在本地查找,如果找不到的話,就會(huì)從遠(yuǎn)程倉(cāng)庫下載,然后返回給用戶,相當(dāng)于起到一個(gè)中轉(zhuǎn)的作用。    

Hosted:是宿主倉(cāng)庫,用戶可以把自己的一些構(gòu)件,deploy到hosted中,也可以手工上傳構(gòu)件到hosted里。比如說oracle的驅(qū)動(dòng)程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted里,一般用來存放公司自己的jar包
Group:是倉(cāng)庫組,在maven里沒有這個(gè)概念,是nexus特有的。目的是將上述多個(gè)倉(cāng)庫聚合,對(duì)用戶暴露統(tǒng)一的地址,這樣用戶就不需要在pom中配置多個(gè)地址,只要統(tǒng)一配置group的地址就可以了右邊那個(gè)Repository Path可以點(diǎn)擊進(jìn)去,看到倉(cāng)庫中artifact列表。不過要注意瀏覽器緩存,當(dāng)你的項(xiàng)目希望在多個(gè)repository使用資源時(shí)就不需要多次引用了,只需要引用一個(gè)group即可

maven-public:maven-central、maven-release和maven-snapshot三個(gè)庫的合集。

maven-release:用來存放release版本的jar包。

maven-snapshot:用來存放snapshot版本的jar包。

四、上傳jar包到maven私服

4.1添加倉(cāng)庫認(rèn)證

找到本地電腦的setting.xml(我的是C:\Users\2YSP\.m2\setting.xml),打開后找到servers節(jié)點(diǎn),在里面添加如下內(nèi)容。

<server><id>releases</id><username>admin</username><password>admin123</password></server><server><id>snapshots</id><username>admin</username><password>admin123</password></server>

4.2在項(xiàng)目的pom.xml添加遠(yuǎn)程發(fā)布的私服倉(cāng)庫地址

1 <distributionManagement> 2 <repository> 3 <!--此id要與setting.xml里面server的id對(duì)應(yīng)--> 4 <id>releases</id> 5 <name>releases Repository</name> 6 <url>http://192.168.75.132:8081/repository/maven-releases/</url> 7 </repository> 8 <snapshotRepository> 9 <id>snapshots</id> 10 <name>snapshots</name> 11 <url>http://192.168.75.132:8081/repository/maven-snapshots/</url> 12 </snapshotRepository> 13 </distributionManagement>

這里的192.168.75.132是我虛擬機(jī)的IP地址,這里的URL可以點(diǎn)擊倉(cāng)庫查看詳情獲取。

4.3發(fā)布

先點(diǎn)擊clean,在點(diǎn)擊deploy就會(huì)自動(dòng)根據(jù)項(xiàng)目的版本上傳到對(duì)應(yīng)的倉(cāng)庫(如果pom.xml上版本是1.1-SNAPSHOT則會(huì)deploy到maven-snapshot,如果是1.1.RELEASE則會(huì)deploy到maven-release)。

一般打包時(shí)maven會(huì)自動(dòng)執(zhí)行單元測(cè)試很耗時(shí)間,如果想略過該過程可以在pom文件添加如下插件。

1 <!-- 打包跳過測(cè)試--> 2 <plugin> 3 <groupId>org.apache.maven.plugins</groupId> 4 <artifactId>maven-surefire-plugin</artifactId> 5 <version>2.18.1</version> 6 <configuration> 7 <skipTests>true</skipTests> 8 </configuration> 9 </plugin>

上傳結(jié)果如圖:

然后在maven倉(cāng)庫里就可以找到我們剛剛上傳的jar包了。

注意:maven倉(cāng)庫的Deployment policy一定要設(shè)置成allow redeploy,否則會(huì)上傳失敗。

五、從私服下載jar包

5.1添加倉(cāng)庫地址

<repositories><repository><id>releases</id><name>maven-public</name><url>http://192.168.75.132:8081/repository/maven-public/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository></repositories>

針對(duì)單個(gè)項(xiàng)目,這個(gè)可以添加到項(xiàng)目的pom.xml文件里,如果很多項(xiàng)目都需要可以添加到setting.xml文件中。

5.2添加依賴,以下為示例

<dependency><groupId>cn.sp</groupId><artifactId>kafka-spring-boot</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

然后一刷新發(fā)現(xiàn)項(xiàng)目里就有了。

六、常見錯(cuò)誤及解決辦法

問題一:上傳報(bào)錯(cuò)誤碼405,Failed to transfer file。

解決方法:仔細(xì)查看報(bào)錯(cuò)信息就會(huì)發(fā)現(xiàn),是上傳的url錯(cuò)了,反正原因就是repository的地址寫錯(cuò)了。

問題二:錯(cuò)誤碼401或者403

解決方法:其實(shí)403錯(cuò)誤就是“禁止訪問”的含義,所以問題的根源肯定在授權(quán)上面。Maven在默認(rèn)情況下會(huì)使用deployment帳號(hào)(默認(rèn)密碼deploy)登錄的系統(tǒng),但是關(guān)鍵的Nexus中Releases倉(cāng)庫默認(rèn)的Deployment Policy是“Disable Redeploy”,所以無法部署的問題在這個(gè)地方,方法是將其修改為“Allow Redeploy”就可以了。401就是Maven settings.xml沒有設(shè)置密碼。

具體參考地址:https://www.javatang.com/archives/2010/01/23/4518375.html

?

轉(zhuǎn)載于:https://www.cnblogs.com/2YSP/p/9533506.html

總結(jié)

以上是生活随笔為你收集整理的【Maven】CentOS7使用Nexus3搭建maven私服的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。