本文環(huán)境實(shí)施是在遠(yuǎn)程Linux主機(jī)上面跑Nexus,然后本地進(jìn)行開發(fā)測試。具體如下
遠(yuǎn)程主機(jī)環(huán)境
系統(tǒng):CentOs 7.X
OpenJDK:1.8.0_151
Maven 3.3.5
Docker 1.13.6
本地環(huán)境
系統(tǒng):MacOs 10.12.6
OpenJDK 1.8.0_152
Maven 3.5.2
IntelliJ IDEA 2017.3.4
安裝Nexus
在遠(yuǎn)程主機(jī)運(yùn)行一下命令:
docker pull sonatype/nexus3
上面命令的意思是下載一個(gè)nexus3的鏡像
繼續(xù)執(zhí)行:
docker run--rm-d--privileged=true-p8081:8081--name nexus-v/root/nexus-data:/var/nexus-data sonatype/nexus3
上面命令是指使用nexus3鏡像創(chuàng)建并啟動(dòng)一個(gè)容器,然后指定暴露8081端口到對(duì)應(yīng)主機(jī)的8081端口,將容器內(nèi)部/var/nexus-data掛載到主機(jī)/root/nexus-data目錄。
如果沒有任何問題的話,Nexus應(yīng)該是搭建成功了。
此時(shí)在瀏覽器輸入:http://ip:8081即可看到以下頁面:(ip為遠(yuǎn)程主機(jī)的ip地址)

image.png
點(diǎn)擊右上方的Sign in進(jìn)行登錄,初始賬號(hào)密碼為admin/admin123.請(qǐng)登錄后修改密碼
如下圖:

image.png
可以看到默認(rèn)情況下Nexus會(huì)幫我們創(chuàng)建了幾個(gè)倉庫,仔細(xì)觀察紅色框住的地方,里面有幾種倉庫的類型,解釋如下:
proxy 遠(yuǎn)程倉庫的代理,比如說nexus配置了一個(gè)central repository的proxy,當(dāng)用戶向這個(gè)proxy請(qǐng)求一個(gè)artifact的時(shí)候,會(huì)現(xiàn)在本地查找,如果找不到,則會(huì)從遠(yuǎn)程倉庫下載,然后返回給用戶。
hosted 宿主倉庫,用戶可以把自己的一些倉庫deploy到這個(gè)倉庫中
group 倉庫組,是nexus特有的概念,目的是將多個(gè)倉庫整合,對(duì)用戶暴露統(tǒng)一的地址,這樣就不需要配置多個(gè)倉庫地址。
下面我們仔細(xì)看一下里面的一些倉庫。點(diǎn)擊maven-central倉庫:

image.png
可以看到是一個(gè)proxy類型的倉庫,他代理的遠(yuǎn)程倉庫地址是https://repo1.maven.org/maven2/。
后退,在進(jìn)入maven-public查看:

image.png
可以看到這是一個(gè)group類型的倉庫,里面包含了maven-releases/maven-snapshots/maven-central倉庫,意思是我們只需要在本地添加這個(gè)倉庫,則可以依賴到上述3個(gè)倉庫中的庫了。
準(zhǔn)備工作
為了實(shí)現(xiàn)本地上傳代碼庫,并且實(shí)現(xiàn)依賴的示例,這里創(chuàng)建一個(gè)新的倉庫(也可以選用已經(jīng)存在的倉庫)和一個(gè)用戶
創(chuàng)建倉庫,點(diǎn)擊Create repository,然后選擇maven2(hosted)然后輸入倉庫名稱(test-release)。在version policy中選擇這個(gè)倉庫的類型,這里選擇release,在Deployment policy中選擇Allow redeploy(這個(gè)很重要).
創(chuàng)建成功如下:

image.png
創(chuàng)建用戶
點(diǎn)擊左側(cè)菜單欄的Users菜單,然后點(diǎn)擊Create local user.我這里創(chuàng)建了一個(gè)用戶,賬號(hào)密碼都是:test
本地操作
修改本地.m2目錄下的settings.xml
<?xml version="1.0" encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><servers><server><id>test</id><username>test</username><password>test</password></server></servers></settings>
上面指定私庫的賬號(hào)密碼。
注意,若是用idea工具,要先配置maven指定到對(duì)應(yīng)的目錄。
使用IDEA創(chuàng)建一個(gè)Maven項(xiàng)目:
pop.xml
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo</artifactId><groupId>com.iti</groupId><version>0.0.1-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><packaging>jar</packaging><modelVersion>4.0.0</modelVersion><artifactId>dubbo-api</artifactId><!--注意限定版本一定為RELEASE,因?yàn)樯蟼鞯膶?duì)應(yīng)倉庫的存儲(chǔ)類型為RELEASE--><version>1.0-RELEASE</version><!--指定倉庫地址--><distributionManagement><repository><!--此名稱要和.m2/settings.xml中設(shè)置的ID一致--><id>test</id><url>http://172.21.13.229:8081/repository/test-release/</url></repository></distributionManagement><build><plugins><!--發(fā)布代碼Jar插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.7</version></plugin><!--發(fā)布源碼插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.0.0</version><executions><execution><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build></project>
簡單的代碼:
publicclassTestUtil{publicstaticvoidmain(String[]args){System.out.println("I am from test-lib!");}}
一切準(zhǔn)備就緒后,打開終端,輸入mvn deploy
如無意外,上傳成功,回到Nexus的網(wǎng)頁中查看結(jié)果

image.png
可以看到已經(jīng)上傳成功。
測試依賴
本地再次創(chuàng)建一個(gè)項(xiàng)目,對(duì)這個(gè)項(xiàng)目進(jìn)行依賴.
在pom.xml添加如下代碼
<dependencies><dependency><groupId>com.iti</groupId><artifactId>dubbo-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.iti</groupId><artifactId>dubbo-config</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><repositories><repository><!--此名稱要和.m2/settings.xml中設(shè)置的ID一致--><id>test</id><url>http://172.21.13.229:8081/repository/test-release/</url></repository></repositories>
然后發(fā)現(xiàn)依賴成功了
至此完成了Docker中使用Nexus部署maven私有倉庫的所有步驟。
支付通道:支付寶 、微信 、掃碼 、動(dòng)態(tài)碼、小程序支付、API代付、分賬
需要支付通道請(qǐng)聯(lián)系扣扣:963194679